![为什么我可以通过端口 80 访问 Nodejs 服务器,即使它在端口 3000 上运行并且 nginx 已停止](https://linux22.com/image/734275/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E7%AB%AF%E5%8F%A3%2080%20%E8%AE%BF%E9%97%AE%20Nodejs%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%8D%B3%E4%BD%BF%E5%AE%83%E5%9C%A8%E7%AB%AF%E5%8F%A3%203000%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%B9%B6%E4%B8%94%20nginx%20%E5%B7%B2%E5%81%9C%E6%AD%A2.png)
我不太熟悉配置 Web 服务器。我在运行 Ubuntu 18.04 的 AWS EC2 实例上的端口 3000 上有一个 Node Express 服务器。
在 AWS 管理控制台中,我有一条允许访问端口 3000 的规则,这样我就可以访问mydomain.com:3000
。没问题 - 这是有道理的。
为了能够通过 进行访问mydomain.com
,我安装了 Nginx 并使用 proxy_pass 进行了非常简单的配置,将端口 80 的请求传递到端口 3000:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mydomain.com www.mydomain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000;
}
}
但是,当我停止 Nginx 时(我这样做是作为移动到 https 的无关尝试的一部分……如果您需要的话,可以了解更多详细信息),我仍然可以访问mydomain.com
。
不知何故,尽管流量进入端口 80,但仍然可以访问端口 3000 上的节点快速服务器。并且 Nginx 没有运行。
怎么了?
我检查了一下sudo iptables -L
,这似乎不是罪魁祸首:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination