我有一个非常简单的设置:一个 ami 映像,其中 spring-boot/tomcat 监听端口 8080 和 8081。我有一个启用了 ping 和 http 的安全组。从下面的列表中我可以看到端口 22、8080 和 8081。我可以从我的笔记本电脑 ping 端口 808X,curl(使用 127.0.0.1),没有任何问题。但对 127.0.0.1 的请求被拒绝,所以我无法检查端口转发是否正常工作。
我在设置中缺少什么?谢谢!
tcp 0 0 127.0.0.1:27017 127.0.0.1:43326 ESTABLISHED
tcp 0 0 127.0.0.1:27017 127.0.0.1:43388 ESTABLISHED
tcp 0 0 127.0.0.1:27017 127.0.0.1:43334 ESTABLISHED
tcp 0 0 127.0.0.1:27017 127.0.0.1:43330 ESTABLISHED
tcp 0 0 127.0.0.1:27017 127.0.0.1:43386 ESTABLISHED
tcp 0 0 127.0.0.1:27017 127.0.0.1:43390 ESTABLISHED
tcp 0 0 127.0.0.1:27017 127.0.0.1:43384 ESTABLISHED
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::8080 :::* LISTEN
tcp 0 0 :::8081 :::* LISTEN
tcp 0 0 :::35729 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::55233 :::* LISTEN
tcp 0 0 ::ffff:127.0.0.1:43328 ::ffff:127.0.0.1:27017 ESTABLISHED
更新
我还输入:
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo service iptables save
sudo service iptables start
sudo service iptables status
鉴于我将“HTTP”(端口 80)添加到安全组,我认为这足以告诉操作系统转发请求。 Tomcat/Spring-boot 在 8080 上运行。
更新2
如果我限制我的安全组 http 设置以仅使用我的 IP,那么端口就会打开,重定向就会起作用。完全相同的命令集
答案1
解决方法是从安全组中删除 http IP6 规则。我认为这可能与 tomcat 需要刺激才能与 ip4 堆栈一起工作有关。
我在应用程序属性文档中没有看到此案例的 spring-boot 条目。因此,无需安装独立的 tomcat,此解决方法即可解决问题。