1. 程式人生 > >AJAX長輪詢在Nginx+Tomcat負載均衡架構上的問題

AJAX長輪詢在Nginx+Tomcat負載均衡架構上的問題

系統架構使用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上