AJAX長輪詢在Nginx+Tomcat負載均衡架構上的問題
阿新 • • 發佈:2019-01-06
系統架構使用Nginx做Web伺服器,兩臺Tomcat做應用伺服器,業務場景是前端通過ajax輪詢請求後端獲取其他群成員的線上離線狀態,實現實時更新。部署負載均衡後,發現狀態更新總是會延遲或卡住,猜測應該是ajax請求分配到兩臺機器上造成的,目前折中的方案就是在Nginx中配置ajax輪詢請求的地址只分配到固定的一臺機器上,nginx配置如下:
單獨配置upstream。配置一個固定ip,然後配置location規則:
upstream ajaxreq{
server 192.168.60.139:18080;
}
location ~ ^/jsp/userSessionStateSyn { # include enable-cors.conf; proxy_set_header Host $host:$remote_port; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-Port $remote_port; proxy_pass http://ajaxreq; }
這樣就配置了所有到包含/jsp/userSessionStateSyn的路徑的請求都分配到192.168.60.139這臺機器的Tomcat上