我正在使用带有不同ASP应用的IIS 8.5运行Windows Server 2012 R2。现在我开发了一个侦听端口3000的Node.js应用程序。此外,还有一条DNS记录,它指向该服务器。
如何在没有IIS的情况下运行节点应用程序(iisnode不是一个选项)在同一台服务器上运行?它应该仍然在端口3000(或类似)上侦听,但是当用户输入域名并没有端口时,它应该识别它并为节点应用程序提供服务。
使用开发服务器(没有DNS绑定),只需在ip地址末尾写入端口(如10.10.10.10:3000)即可。但是,使用DNS记录,我无法让它工作。 sub.domain.com:3000
未显示任何内容,sub.domain.com
正在重定向到IIS起始页。我能在这做什么?
答案 0 :(得分:0)
sub.domain.com:3000
应该正常运作。您可能有一些防火墙阻止对此端口的传入外部请求。
当有人键入http://sub.domain.com
(没有端口)时,客户端默认将请求发送到端口80(如果使用https://
则为443)。如果IIS已经在端口80上侦听,那么你无法做任何事情来使node.js响应这个端口。
您可以做的是设置一个快速反向代理(如NGINX)并将其绑定到端口80.将IIS移动到另一个,如8080.配置NGINX将请求从端口80传递到另一个端口,基于传入请求的域。
配置将是这样的:
server {
listen 80;
server_name domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}
server {
listen 80;
server_name sub.domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:3000;
}
}
您也可以将IIS用作反向代理,但正如您所说,您不希望IIS参与请求,因此NGINX将是一个不错的选择。