現象:
發現公司後臺通過***有的可以顯示,有的不能顯示,不能返回任何數據.不經過***就沒問題.
排查:
點擊某些頁時,感覺是沒任何反應;看後臺日誌發現每次請求都是到達服務器的.
經過查看nginx日誌,發現這2個請求的 字節大小不同,大概超過1000多的就打不開.
27.115.1.1 - - [27/Sep/2014:12:12:53 +0800] "GET /admin/game_setting/ HTTP/1.1" 200 1659 "http://1.1.1.1:1688/admin/left/" "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0"
27.115.1.1 - - [27/Sep/2014:12:13:11 +0800] "GET /admin/makeconfig/ HTTP/1.1" 200 654 "http://1.1.1.1:1688 /admin/left/" "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0"
firebug直接顯示流產了,返回字節爲0
解決:
這個時候問題的答案就有了.是網卡之間的MTU(最大傳輸單元)問題.有的服務器之間如果不一致,就會出現這類問題.
直接在***機器上netstat -i 觀察下各網卡的MTU值是多少,還有ppp0的值.
我這裏直接指定mss(最大報文長度)的長度(以前做***的時候都設置了,這次居然忘記了,換服了才發現這個問題.)
/sbin/iptables -A FORWARD -p tcp --syn -s ***地址池IP.0/24 -j TCPMSS --set-mss 1356
iptables裏必須要有的2條#service iptables statu
Chain POSTROUTING (policy ACCEPT)num target prot opt source destination 1 MASQUERADE all -- 192.168.100.0/24 0.0.0.0/0 Chain FORWARD (policy ACCEPT)num target prot opt source destination 1 TCPMSS tcp -- 192.168.100.0/24 0.0.0.0/0 tcp flags:0x17/0x02 TCPMSS set 1356
(很久沒在這裏發文章了,難道是變懶了,呵呵... 想想每次有問題都是問百度谷歌,這要感謝前輩們的貢獻.今天這個問題不是很好找,所以還是發出來分享給需要的朋友)