neu*_*t47 1 networking linux centos amazon-ec2 amazon-web-services
我有一个成功托管在 Amazon AMI 实例上的 API。我知道这是肯定的,因为我可以使用 curl 在本地使用它。Api 托管在端口 8080 上。
这就是我为打开端口而放入 cmd 的内容:
su
iptables -I INPUT -p tcp --dport 8080 -m state --state NEW -j ACCEPT
service iptables save
/etc/init.d/iptables restart
Run Code Online (Sandbox Code Playgroud)
我也关闭了防火墙:
service iptables save
service iptables stop
chkconfig iptables off
Run Code Online (Sandbox Code Playgroud)
而且我仍然无法从外部通过服务器公共 IP 访问我的应用程序。为什么会这样?
更新
结果为/sbin/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
Run Code Online (Sandbox Code Playgroud)
更新 2
netstat -ltpn 结果:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 3941/uwsgi
tcp 0 0 0.0.0.0:58704 0.0.0.0:* LISTEN -
tcp 0 0 :::45589 :::* LISTEN -
tcp 0 0 :::22 :::* LISTEN -
tcp 0 0 :::111 :::* LISTEN -
Run Code Online (Sandbox Code Playgroud)
dsm*_*k80 11
从netstat输出来看,您的应用程序似乎仅在环回接口上侦听 -127.0.0.1:8080因此您无法在实例之外连接到它。
参见例如ssh服务 - 0.0.0.0:22。这意味着该服务正在侦听“所有网络接口”。
您需要重新配置您的应用程序,使其不仅在环回上侦听。
另一种解决方案是添加iptables DNAT规则,以便将传入请求转发到环回接口。
| 归档时间: |
|
| 查看次数: |
9523 次 |
| 最近记录: |