1. 程式人生 > >網站開發進階(二)阿里雲將80埠請求轉發到其他埠

網站開發進階(二)阿里雲將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

埠,結果是:svchost.exe

是一個叫AliYunDun的程式將80端口占用了。

於是各種google,大神回答說阿里盾並不是將80埠給佔用了,而是為了保護請求,進行一層防護。是雲盾作為client連線了你server80埠。並不是bind listenserver80埠上。於是就有了下面的解決方法:

解決方案(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服務的TCP80

Windows server環境下,需要進行埠對映。詳情見部落格“Windows NAT埠對映”。