我有一个在 Digital Ocean 上运行 Ubuntu 13 的 droplet。在它上面,我有一个在端口 5000 上运行的节点服务器。从外部我可以通过端口 80 访问该服务器,但我不知道是什么将流量从 80 转发到 5000。
- 我无法使用 curl 从服务器本地连接到端口 80,但可以正常连接到端口 5000
- 我没有运行 nginx
- iptables -L 为空(无规则)
- 如果我使用默认配置启动 nginx,当我对 localhost 执行 curl 时,我会得到默认页面,但是从外部我仍然可以从端口 5000 上运行的服务器获取内容。
- 如果我停止端口 5000 上的服务器,那么即使默认的 nginx 正在本地运行,我也不会收到来自端口 80 上的外部连接的响应。
- netstat 没有显示端口 80 的条目
- nmap 在本地运行显示端口 80 已关闭(当 nginx 停止时)。
- 一位同事建议我检查 /etc/rc.local 中是否有单独的 iptables,但服务器上没有这样的目录
对我来说,所有证据都指向我的服务器之外的某些东西正在将 80 重定向到 5000,但 Digital Ocean 表示他们的环境中没有任何东西导致这种情况......
答案1
找到了!
iptables -L 默认不列出预路由规则。
iptables -t nat -L
显示在我的计算机上将端口 80 转发到 5000 的预路由规则。