我以为是 iptables 的问题。。但似乎不是。我真的不知道这种情况。
我正在获取一个服务器托管(CentOS)。我安装了 Nginx + Django,并且 nginx 使用 8080 端口。一个域已连接到服务器。
当我在服务器中执行“wget [domain]:8080/[app name]/”时,成功了。当然,“wget 127.0.0.1:8080/[app name]/”也没问题。(wget [server ip]:8080/[app name]/也可以)
但是,从其他计算机连接失败。(消息说,没有路由)
我检查了防火墙设置。我执行了这些命令。
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 8080 -j ACCEPT
iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
/etc/init.d/iptables restart
我不太了解命令的所有选项,而且我认为有些命令是没用的,但我只是尝试了所有谷歌搜索的 iptables 设置。
但我仍然无法连接到服务器。我应该先检查什么?
我不知道这是否重要,但还是要补充一下。在 80 端口上,一个 Apache 服务器正在运行。它运行正常,我可以从其他计算机连接到 Apache。存在数据库连接问题(PHP 到 MySQL),但我认为这只是 PHP 编码错误。
请原谅我的英语水平较低。我不是英语母语人士……但我尽可能地解释清楚了。感谢您阅读这个问题。
答案1
关闭你的防火墙,清除所有规则并重试你的远程连接
- 如果你可以连接 -> 调整你的防火墙
- 如果你无法连接——>调整你的路由
tcpdump port 8080
您可以在服务器上查看包裹是否到达。
答案2
如果您已经执行了您写的命令序列,我认为没有应用任何规则,因为您已经重新启动了 iptables 而没有保存新的设置。
尝试在 iptables 文件 /etc/sysconfig/iptables 中添加以下规则(检查端口 8080 上没有其他规则):
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
或者使用以下命令:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
iptables-save
重新启动 iptables:
/etc/init.d/iptables restart
现在您应该看到运行此命令的规则:
root@centos01 sysconfig]# iptables -L -n | grep 8080
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
尝试从远程主机连接