【问题标题】:Unable to access express/node server on port 3001 despite enabling via firewall-cmd尽管通过 firewall-cmd 启用,但无法访问端口 3001 上的 express/node 服务器
【发布时间】:2021-11-30 01:39:27
【问题描述】:

今天早上我一直在寻找如何解决我的问题,但似乎没有任何东西适合我的情况或解决我的问题,所以我在这里。

我有一个在CentOS Linux release 7.5.1804 (Core) 上运行的服务器,并且我已经安装了节点 v10.11.0 来托管一个网站。我有一个域foo.ca,我有两个单独的 Web 服务器在运行(一个用于客户端,一个用于服务器)。客户端在 3000 端口上运行,我使用 iptables 将端口 80 转发到端口 3000,因此我可以在不明确列出端口的情况下实际查看我的网站(即通过在地址栏中输入 foo.ca

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

这很好,我可以看到foo.ca

当我尝试访问在端口 3001 上运行的服务器时出现问题。我已使用 firewall-cmd 通过 tcp 启用该端口:

sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3001/tcp --permanent
sudo firewall-cmd --reload

如果我输入 foo.ca:3001 chrome 告诉我无法访问该站点,foo.ca 响应时间过长。

我通过在线工具测试了3001端口,它说它是开放的,我还检查了netstat:

netstat -tuplen
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      995        12161      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          12066      -
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      1000       56647615   4926/node
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      1000       56671635   6195/node

一些在线建议包括使用 0.0.0.0 而不是 localhost 但正如您所见,我已经实现了。我现在真的不知道我的选择是什么,我也尝试过通过 iptables 启用端口,但我不确定它做了什么:

iptables -A INPUT -p tcp --dport 3001 -j ACCEPT

最后一件事,我的快递服务器代码是这样的:

const express = require('express')
const app = express()
const port = 3001

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, '0.0.0.0', () => console.log(`Example app listening on port ${port}!`))

我像node test一样运行它

有人有什么想法吗?我不是网络大师

【问题讨论】:

  • 有人吗?请问?
  • 您可以使用 curl localhost:3001 从托管它的机器本身访问该站点吗?
  • 你能用192.168.1.6:3001这样的IP地址和端口组合访问网站吗?
  • 您不必配置 iptables 来重定向流量。您可以在 apache 中配置两台虚拟主机,一台用于服务器(server.foo.ca),一台用于客户端(client.foo.ca),一切都很好。

标签: node.js express firewall iptables


【解决方案1】:

解决方案是我的网络由于某种原因阻止了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多