網站開發進階(二)阿里雲將80埠請求轉發到其他埠
阿里雲將80埠請求轉發到其他埠
背景
租了一臺阿里雲ECS,想搭建一個java Web 程式,環境都搭建好後,將Tomcat埠改為80並執行。
./startup.sh
程式報錯埠號衝突。
估計是80埠被佔用了,但是想繫結域名,還是需要將80埠對映到tomcat才行。
於是檢查佔用80埠的程式
輸入命令:netstat -ano,列出所有埠的情況。在列表中我們觀察被佔用的埠,比如是49157,首先找到它。
檢視被佔用埠對應的PID,輸入命令:netstat -aon|findstr "49157",回車,記下最後一位數字,即PID,這裡是2720。
繼續輸入tasklist|findstr "2720",回車,檢視是哪個程序或者程式佔用了2720
是一個叫AliYunDun的程式將80端口占用了。
於是各種google,大神回答說阿里盾並不是將80埠給佔用了,而是為了保護請求,進行一層防護。是雲盾作為client連線了你server的80埠。並不是bind listen在server的80埠上。於是就有了下面的解決方法:
解決方案(Linux環境)
由於80埠受到各種保護措施,所以一般程式是無法獲取80埠使用權的,要想實現不輸入埠號直接訪問程式,需要將80埠的請求轉發到Tomcat設定的埠上去,也就是預設的8080埠。
首先檢視伺服器網絡卡及ip設定:
很明顯eth1為外網網絡卡。
設定埠號轉發規則:
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
儲存規則
[root ~]# cd /etc/rc.d/init.d
[root ~]# ./iptables save
## iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
搞定!
注:此處的80埠是指提供web服務的TCP埠80。
Windows server環境下,需要進行埠對映。詳情見部落格“Windows NAT埠對映”。