尽管通过 firewall-cmd 启用,但无法访问端口 3001 上的 express/node 服务器
Unable to access express/node server on port 3001 despite enabling via firewall-cmd
今天早上我一直在搜索,试图找出解决问题的方法,但似乎没有适合我的情况或解决我的问题的方法,所以我来了。
我在 CentOS Linux release 7.5.1804 (Core)
上有一台服务器 运行ning,我安装了节点 v10.11.0 以托管网站。我有一个域 foo.ca
,我有两个独立的 Web 服务器 运行ning(一个用于客户端,一个用于服务器)。客户端 运行 在端口 3000 上,我使用 iptables 将端口 80 转发到端口 3000,这样我实际上可以在不明确列出端口的情况下查看我的网站(即通过在地址栏中输入 foo.ca
)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
这很好用,我可以看到 foo.ca
当我尝试访问端口 3001 上 运行ning 的服务器时,我的问题出现了。我已经使用 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
有人有什么想法吗?我不是网络大师
解决方案是我的网络出于某种原因阻止了它
今天早上我一直在搜索,试图找出解决问题的方法,但似乎没有适合我的情况或解决我的问题的方法,所以我来了。
我在 CentOS Linux release 7.5.1804 (Core)
上有一台服务器 运行ning,我安装了节点 v10.11.0 以托管网站。我有一个域 foo.ca
,我有两个独立的 Web 服务器 运行ning(一个用于客户端,一个用于服务器)。客户端 运行 在端口 3000 上,我使用 iptables 将端口 80 转发到端口 3000,这样我实际上可以在不明确列出端口的情况下查看我的网站(即通过在地址栏中输入 foo.ca
)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
这很好用,我可以看到 foo.ca
当我尝试访问端口 3001 上 运行ning 的服务器时,我的问题出现了。我已经使用 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
有人有什么想法吗?我不是网络大师
解决方案是我的网络出于某种原因阻止了它