如何使用 iptables 將埠 80 和 443 重定向到 8080 和 8443?
我正在查看名為 DSpace 的 Tomcat 6 webapp 的文件,特別是關於在標準埠上執行 Running DSpace(http:// 為 80,https:// 為 443)
我正在嘗試使用“方法 1”,它使用 iptables 將流量從埠 80 和 443 重定向到 8080 和 8443,以擺脫
:8080
url 中的。這些是文件給出的命令:
/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080 /sbin/iptables -t nat -A OUTPUT -p tcp -d _[server_ip_address|server_ip_address]_ --dport 80 -j REDIRECT --to-port 8080 /sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443
我認為第二行需要更改一些內容,特別是該部分
-d _[server_ip_address|server_ip_address]_
- 但我不確定是什麼。我已經閱讀了該man
頁面,iptables
但沒有任何運氣。我嘗試更改
-d _[server_ip_address|server_ip_address]_
為:-d _[127.0.0.1|127.0.0.1]_
並且:
-d _[54.224.121.116|54.224.121.116]_
並且:
-d _[ec2-54-224-112-116.compute-1.amazonaws.com|ec2-54-224-112-116.compute-1.amazonaws.com]_
我得到的錯誤
Bad argument 'REDIRECT'
包括host/network '_127.0.0.1' not found
誰能幫我找出我做錯了什麼?
更新:我認為重定向將在沒有第二行的情況下工作,但我仍然不確定它的預期目的是什麼……
我認為您只是對該頁面上損壞的標點符號感到困惑。
_
和是一些標記的[
殘餘,它們不是iptables
語法的一部分。此外,|
字元不能用於分隔 IP,您需要使用,
(逗號)。/sbin/iptables -t nat -A OUTPUT -p tcp -d 54.224.121.116,54.224.121.116 --dport 80 -j REDIRECT --to-port 8080
fwiw 我實際上會考慮在正常 Apache 上使用 mod_proxy_ajp。聽起來您試圖讓人們不必在 URL 中的伺服器名稱末尾鍵入/查看 :8080 和 :8443 。mod_proxy_ajp 通常對於您嘗試做的事情更容易,如果您決定稍後提高賭注並進行一些負載平衡,那麼如果您已經在 mod_proxy_ajp 設置中,這樣做是微不足道的。這是我的一台生產伺服器上的設置:
<Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPass / ajp://fqdn.for.server:8009/ ProxyPassReverse / ajp://fqdn.for.server:8009/
您可以將 ProxyPass 放在 VirtualHost 配置中,之後它幾乎就像配置任何其他主機一樣(這意味著您可以在埠 443 上配置 SSL,在埠 80 上配置明文)。對整個交易進行更大的討論。
Apache+mod_proxy 不是做到這一點的唯一方法,但它是我最有經驗的一種方法,而且它似乎比你嘗試做的方法要少(使用防火牆進行埠轉發)。