【问题标题】:How do I access my node.js server via public IP address?如何通过公共 IP 地址访问我的 node.js 服务器?
【发布时间】:2020-08-04 17:59:08
【问题描述】:

我想通过在浏览器中输入我的公共 IP 地址来从远程 node.js 服务器获得响应。当我在我的个人计算机上的浏览器中输入我的公共 IP 时,我得到“无法连接”。我的 node.js 服务器没有连接到 World =(

  • 我在 Linode 上运行 CentOS(但我认为这两种选择对我的问题都不重要)。
  • 通过我的个人计算机(Mac)上的终端,我可以成功地以 root 身份通过 SSH 连接到我的 Linode。
  • 我已经在我的 Linode 上成功安装了 node.js。
  • 我可以在我的 Linode 上编译和运行一个简单的服务器。
var http = require('http');//create a server object:
http.createServer(function (req, res) {
  res.write('Hello World!'); //write a response
  res.end(); //end the response
}).listen(3000, function(){
 console.log("server start at port 3000");
});

我试过了:

  • 设置主机名。
  • 更改我服务器上的“hosts”文件。
  • 在我的 node.js 服务器中更改端口号(3000、80、8080、3001、0.0.0.0 等)。
  • 今天阅读了 100 篇有关如何部署 node.js 服务器的文章。
  • 在 Google、Stackoverflow、Linode 论坛等中搜索可能对我有帮助的主题。

我对自己做错了什么一无所知,非常感谢您的帮助。

【问题讨论】:

  • 你端口转发了吗?
  • 这是我需要做的事情吗?
  • 如果您在家中或本地网络上运行此程序,则需要进行端口转发。这可能因您的 ISP/调制解调器而异,因此我建议查找 {your isp} how to port forward
  • node.js 服务器在远程 Linode 上运行,而不是我家或本地网络。
  • 奇怪 - 您是否尝试过联系服务器提供商?

标签: node.js ip linode


【解决方案1】:

我最终找到了答案,这要感谢 Saddy 提出的问题可能是端口转发的建议。

1. I decided to use ports 3080 and 3443 for my node server.
2. I SSHed into my CentOs instance.
3. I disabled the default firewall, firewalld.
4. I set up port forwarding using iptables with the following commands:

防火墙停止

防火墙禁用

iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 25 -j ACCEPT

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3080

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3443

iptables-save > /etc/sysconfig/iptables

之后,我就可以通过浏览器访问我的节点服务器了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2019-01-12
    • 2014-04-25
    • 2019-12-30
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2020-07-10
    相关资源
    最近更新 更多