windows下nodejs监听80端口,如何实现?
发布于 9 年前 作者 tanshanli 14095 次浏览 最后一次编辑是 8 年前 来自 问答

情况如下: 我IIS开着里面有多个网站都是80端口: eg:www.aaaaa.com www.bbbb.com www.cccc.com 注释:非真实域名 现在我想用nodejs监听另外一个域名的80端口,老是失败。 代码如下:

var http=require(‘http’); var url=require(‘url’); function start(){ function onRequest(req,res){ res.writeHead(200,{‘Content-type’:‘text/plain’}); res.write(‘hello world’); res.end(); } var server=http.createServer(onRequest); server.listen(80,‘ccc.com’); console.log(‘Server is started’); } start();

异常信息如下图: QQ截图20160222113323.png

7 回复

如果换成其他端口,例如 1379,服务启动就没有任何问题,通过外网访问 域名:1379 也能访问结果。

我是想用 nodejs试试开发 微信,只支持80端口。

1024以下端口要用管理员权限才行。

域名识别需要自己写代码实现,没几行所以我就没有拉出来专门折腾,这个是我的一个实现 https://github.com/shy2850/node-server/blob/master/nodeLib/index.js#L27

效果就是实现域名识别了, http://f2e-server.com/server.html#host-conf

一台PC上的同一个端口通常只能提供一种服务,你不可能在IIS或者Apache开启80端口的同时再开启80端口服务,你之所以能看到统一端口的不同服务,就是服务器使用了类似上面的本地域名识别功能。

对这方面不是太懂,但难道不是端口被占用了吗?用iis还不如用nginx,然后添加多个虚拟主机,反向代理

可以给iis 装个 url 重写组件,然后把对应网站的请求转发到你的端口上

问题找到了,端口被程序占用,netstat -ano查看到 pid=4的程序占用了80端口。但是又是 system程序,不敢强制停止, 最终百度到方法:停止 SQL Server ReportingServices这个服务,然后 nodejs就能直接通过域名绑定 80端口了。 代码如下:

var http=require(‘http’); var url=require(‘url’); function start(){ function onRequest(req,res){ res.writeHead(200,{‘Content-type’:‘text/plain’}); res.write(‘hello world’); res.end(); } var server=http.createServer(onRequest); server.listen(80,‘cccc.com’); console.log(‘Server is started’); } start();

运行结果是成功,外网也能通过域名直接访问内容了。
谢谢各位的热心帮助,如果有后来着也遇到类似问题,可以加qq 2446681809 交流
回到顶部