|
1、Nginx端口轉(zhuǎn)發(fā)因?yàn)閚ginx賬號(hào)不能直接啟動(dòng)80端口,所以利用iptables做了80到8081端口的轉(zhuǎn)發(fā),這樣外部應(yīng)用可以直接訪問80端口,然后通過iptables轉(zhuǎn)發(fā)到真正的nginx服務(wù)的8081端口。 Iptables轉(zhuǎn)發(fā)命令: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081 | 2、外網(wǎng)能通,但是本地不通外網(wǎng)的網(wǎng)頁頁面能打通,如下: [tomcat@dev_121_21 ~]$ wget http://bright./PLATFORM_AUTH_Service/1.html --2016-11-22 12:43:01-- http://bright./PLATFORM_AUTH_Service/1.html 正在解析主機(jī) bright.... 192.168.121.21 正在連接 bright.|192.168.121.21|:80... 已連接。 已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 200 OK 長度:39 [text/html] 正在保存至: “1.html” 100%[=====================================================================================================================================================>] 39 --.-K/s in 0s 2016-11-22 12:43:01 (4.13 MB/s) - 已保存 “1.html” [39/39]) [tomcat@dev_121_21 ~]$ | 本地的service服務(wù)器打不通: [tomcat@dev_121_21 ~]$ wget http://bright./PLATFORM_AUTH_Service/remoting/AuthenticationService --2016-11-22 12:29:17-- http://bright./PLATFORM_AUTH_Service/remoting/AuthenticationService 正在解析主機(jī) bright.... 192.168.121.21 正在連接 bright.|192.168.121.21|:80... 失?。壕芙^連接。 [tomcat@dev_121_21 ~]$ | 問題在哪里呢?直接telnet端口80試試 # telnet域名的80端口不通 [tomcat@dev_121_21 ~]$ telnet bright. 80 Trying 192.168.121.21... telnet: connect to address 192.168.121.21: Connection refused [tomcat@dev_121_21 ~]$ # telnet 域名所在ip地址的80端口,也不通 [tomcat@dev_121_21 ~]$ telnet 192.168.121.21 80 Trying 192.168.121.21... telnet: connect to address 192.168.121.21: Connection refused [tomcat@dev_121_21 ~]$ # 因?yàn)?/span>80只是iptables轉(zhuǎn)發(fā)的端口,不是真正nginx服務(wù)的端口,nginx服務(wù)的8081端口是有效的, [tomcat@dev_121_21 ~]$ telnet bright. 8081 Trying 192.168.121.21... Connected to bright.. Escape character is '^]'. Connection closed by foreign host. [tomcat@dev_121_21 ~]$ | 問題場景很明顯了,就是本地本機(jī)telnet不通80端口,其它的外部過來的訪問80端口都o(jì)k。 問題分析: 外網(wǎng)訪問需要經(jīng)過PREROUTING鏈,但是localhost以及192.168.121.21本機(jī)ip地址不經(jīng)過該鏈,因此需要用OUTPUT。 3、設(shè)置OUTPUT設(shè)置output限制: #在本機(jī)telnet也可以做轉(zhuǎn)發(fā)到本機(jī)端口,不過限制了ip地址為localhost的域名訪問 [root@dev_121_21 ~]#iptables -t nat -A OUTPUT -d 192.168.121.21 -p tcp --dport 80 -j REDIRECT --to-ports 8081 #不限制ip地址的訪問 [root@dev_121_21 ~]#iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8081 PS:如果想外部內(nèi)部都通過域名來走,而域名又綁定實(shí)際的ip地址的話,那么這里就需要采用第一種限制域名實(shí)際ip的方式來操作才能有效 # iptables永久生效,保存到系統(tǒng)配置中 [root@dev_121_21 ~]# service iptables save; iptables:將防火墻規(guī)則保存到 /etc/sysconfig/iptables: [確定] [root@dev_121_21 ~]# chkconfig --level 2345 iptables on; [root@dev_121_21 ~]# chkconfig --add iptables; [root@dev_121_21 ~]# service iptables restart iptables:清除防火墻規(guī)則: [確定] iptables:將鏈設(shè)置為政策 ACCEPT:nat [確定] iptables:正在卸載模塊: [確定] iptables:應(yīng)用防火墻規(guī)則: [確定] [root@dev_121_21 ~]# | 4、問題解決本地能通 再試下,本地就可以訪問本地的service接口服務(wù)了: [tomcat@dev_121_21 ~]$ wget http://bright./PLATFORM_AUTH_Service/remoting/AuthenticationService --2016-11-22 12:51:14-- http://bright./PLATFORM_AUTH_Service/remoting/AuthenticationService 正在解析主機(jī) bright.... 192.168.121.21 正在連接 bright.|192.168.121.21|:80... 已連接。 已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 405 Method Not Allowed 2016-11-22 12:51:14 錯(cuò)誤 405:Method Not Allowed。 [tomcat@dev_121_21 ~]$ | 參考文章:http://blog.csdn.net/zzhongcy/article/details/42738285
|