好吧,我搜索了好几个小时,但都没有正常工作,所以我肯定是哪里做错了。它在 localhost:port 上运行良好,但我无法让它远程运行。
这是 app.js
var http = require('http');
var express = require('express');
var app = express();
app.set('view engine', 'jade');
app.set('views', './views');
app.get('/', function(req, res) {
res.render('index', {title: 'Welcome', message: 'Hello ExpressJS!'});
});
app.listen(3000);
console.log('Running Express...');
这是我的端口转发配置:
Name: HTTP
Service Type: TCP
External Starting Port: 80
External Ending Port: 80
Use the same port range for Internal Port: [Checked]
Internal IP Address: 192.168.1.11 (This is the pc I want to use)
DNS 配置
Name: Blank Type: A TTL: 300 Target: My Ip Address
Name: WWW Type: A TTL: 300 Target: My Ip Address
如果我使用 www.mydomain.com,则什么也得不到,如果我使用我的 IP 地址,仍然什么也得不到。我取消选中使用相同的内部端口,从端口转发中输入 3000,但它也没有做任何事情,一直导致错误。
我如何使我的 Node js 服务器公开?
答案1
您的端口转发仅引用端口 80,但您的服务器位于端口 3000 上,因此端口转发永远不会到达您的服务器进程。您有几种解决方法:
您可以将路由器 IP 上的端口 80 转发到 192.168.1.11 上的端口 3000,然后您就可以访问公共 IP 地址上的端口 80,并且传入的端口 80 流量将被转发到服务器上的端口 3000。
您可以将路由器 IP 上的端口 3000 转发到 192.168.1.11 上的端口 3000,然后您就可以访问公共 IP 地址上的端口 3000,并且传入的端口 3000 流量将被转发到服务器上的端口 3000。
您可以将路由器 IP 上的端口 80 转发到 192.168.1.11 上的端口 80,然后您就可以访问公共 IP 地址上的端口 80,并将服务器更改为在端口 80 上运行,传入的端口 80 流量将被转发到服务器上的端口 80。
首先,担心如何使用您的公共 IP 地址使其正常工作。然后,一旦工作正常,您就可以测试/配置该公共 IP 地址的 DNS 条目。
在 Windows 上需要考虑的其他事项:
某些端口上可能已经有其他服务器在运行,因此您必须确保不会与现有的端口使用发生冲突。
保护您本地计算机的 Windows 防火墙可能需要配置为允许到您的服务器的传入连接(或者您可以暂时将其关闭,但不建议将其关闭)。