前言:
今天,公司主站突然出現IDE創建應用沒反應的問題,經過預發布環境、非代理環境下面的服務測試,均沒有問題,定位問題出現在前端。而我們前端有兩層代理,一是青松抗D系統,一是我們自己的nginx代理系統。通過web頁面測試發現控制台曝出下面的錯誤:
503 Service Temporarily Unavailable 那么可以斷定的確是nginx這一層出現了問題。想想以前的nginx的配置修改及青松系統的接入,找到如下原因:
1. nginx設置單個IP的訪問次數:
limit_req_zone $binary_remote_addr zone=allips:10m rate=100r/m #單位時間每分鍾內,當且僅當允許同一個IP過來的請求次數為100次。
2. 查詢nginx日志,發現大量的請求IP地址來源為223.202.31.220,該地址為青松在我公司機房部署的私有節點服務器地址。
所以問題是這樣,所有的請求通過223.202.31.220到達后端nginx,然后被當成來自同一個IP地址的請求,以至於返回了503的錯誤信息。
解決辦法:
通過上述分析,定位到問題所在,那么就需要一個解決辦法。其實思路是很明確的,把青松抗D私有節點服務器地址加入到nginx的白名單策略中。有兩種辦法,簡單介紹如下:
1.利用nginx的white_black_list_conf模塊:
參考鏈接:http://www.ttlsa.com/nginx/nginx-module-ngx_white_black_list/
2.利用nginx的geo、map命令:
參考鏈接:http://www.ttlsa.com/nginx/nginx-speed-white-list-configuration/