【问题标题】:Redirecting ports for a service can iptables be used instead of mod_proxy可以使用 iptables 代替 mod_proxy 为服务重定向端口
【发布时间】:2024-04-23 19:50:02
【问题描述】:

我有一个在 http 端口 8080 和 https 端口 8443 上运行的服务,并且到端口 8080 的所有流量都被重定向到在 server.xml 本身上配置的 https 8443。

要求:

使用端口 80,8080,443,8443 时的所有流量都应转移到 8443,而不会在 URL 下显示端口号

可能的解决方案:

我知道使用 mod_proxy、屏蔽和反向代理我们可以实现它 (http://www.pothireddy.com/knowledge/environment/masking/)


这里的问题是我们是否可以使用 IPTABLES 来实现它而不是 mod_proxy 解决方案,如果可以,我们如何实现它....

已经尝试过这样的事情:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443 修复了有人访问 443 端口时的问题

  1. 当有人明确点击端口 8443 时,端口 8443 会显示 在网址上?我们可以实现......只是为了掩盖 端口 8443 iptables -t nat -A PREROUTING -p tcp --dport 8443 -j 重定向 --to-port 8443

  2. 当我尝试时,如何将流量从端口 80 重定向到端口 8443 使用下面的命令,看起来它变得混乱转移 从 http 端口到 https 端口的流量? iptables -t nat -A PREROUTING -p tcp --dport 8443 -j 重定向 --to-port 8443

解决上述两个问题的任何可能解决方案?

【问题讨论】:

    标签: unix jira iptables mod-proxy masking


    【解决方案1】:

    如果您使用的是 apache 网络服务器,您可以在某个端口创建新的虚拟主机,例如 http://wiki.apache.org/httpd/RedirectSSL

    NameVirtualHost *:8080
    <VirtualHost *:8080>
       ServerName mysite.example.com
       DocumentRoot /usr/local/apache2/htdocs
       Redirect permanent /secure https://mysite.example.com/secure:8443
    </VirtualHost>
    
    <VirtualHost _default_:8443>
       ServerName mysite.example.com
       DocumentRoot /usr/local/apache2/htdocs
       SSLEngine On
    # etc...
    </VirtualHost>
    

    【讨论】: