Node.js: 在IIS中绑定3000端口与DNS
Node.js: bind port 3000 with DNS in IIS
我正在 运行使用 IIS 8.5 和不同的 ASP 应用程序安装 Windows Server 2012 R2。现在我开发了一个 Node.js 应用程序,它在端口 3000 上侦听。此外,还有一个 DNS 记录精确指向该服务器。
如何在同一台服务器上不涉及 IIS(iisnode 不是一个选项)的情况下将节点应用程序获取到 运行?它应该仍然侦听端口 3000(或类似端口),但是当用户输入没有端口的域名时,它应该识别它并为节点应用程序提供服务。
对于开发服务器(无 DNS 绑定),它只需在 ip 地址末尾写入端口(如 10.10.10.10:3000)即可工作。但是,对于 DNS 记录,我无法使其正常工作。 sub.domain.com:3000
没有显示任何内容,sub.domain.com
正在重定向到 IIS 起始页。我可以在这里做什么?
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 是一个不错的选择。
我正在 运行使用 IIS 8.5 和不同的 ASP 应用程序安装 Windows Server 2012 R2。现在我开发了一个 Node.js 应用程序,它在端口 3000 上侦听。此外,还有一个 DNS 记录精确指向该服务器。
如何在同一台服务器上不涉及 IIS(iisnode 不是一个选项)的情况下将节点应用程序获取到 运行?它应该仍然侦听端口 3000(或类似端口),但是当用户输入没有端口的域名时,它应该识别它并为节点应用程序提供服务。
对于开发服务器(无 DNS 绑定),它只需在 ip 地址末尾写入端口(如 10.10.10.10:3000)即可工作。但是,对于 DNS 记录,我无法使其正常工作。 sub.domain.com:3000
没有显示任何内容,sub.domain.com
正在重定向到 IIS 起始页。我可以在这里做什么?
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 是一个不错的选择。