![iptables 将端口 80 重定向到 8080 - 如何禁止直接访问端口 8080?](https://linux22.com/image/519490/iptables%20%E5%B0%86%E7%AB%AF%E5%8F%A3%2080%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%208080%20-%20%E5%A6%82%E4%BD%95%E7%A6%81%E6%AD%A2%E7%9B%B4%E6%8E%A5%E8%AE%BF%E9%97%AE%E7%AB%AF%E5%8F%A3%208080%EF%BC%9F.png)
我已使用 iptables 将 Tomcat 服务器的所有请求从端口 80 路由到端口 8080。
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
现在http://mydomain.com/
运行正常,但人们仍然可以访问http://mydomain.com:8080
。我发现在其他网站上这是不可能的。有没有办法禁用通过 URL 直接访问端口 8080?
答案1
当您访问http://我的域名.com,它会将 URL 重写为http://mydomain.com:8080?如果确实如此,我不知道如何使用纯 iptables 使其工作(因为您需要打开 8080 端口才能响应请求)。我在这里做了一个快速测试,URL 被重写了,但可能是我的网站在这么做。
话虽如此,也许最好放一个nginx或者 ApacheProxyPass/ProxyPassReverse在您的应用程序前面处理 URL,同时还可以使用nginx
或apache
的 URL 重写、负载平衡和其他功能。
答案2
我使用 iptables 的时间还不长,所以我不知道如何为您编写规则,但我相信如果您在过滤表中删除或拒绝对端口 8080 的所有请求,然后将您提供的语句放入后路由链中,您将得到所需的结果。
我仍在尝试学习 iptables,因此如果这是错误的,您能在评论中告诉我原因吗?