如何利用nginx爲多個xxljob配置統一入口,而且用戶登錄後ip固定不會飄?
首先,需要確保這些xxljob的上下文路徑是一致的,上下文路徑可以在根目錄下xxl-job-admin/src/main/resources/application.properties中的server.servlet.context-path字段得知,默認爲/xxl-job-admin。
然後修改nginx.conf文件,其中location字段與proxy_pass中的路徑需要與xxljob的上下文路徑保持一致。
worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream xxljob-server{ ip_hash; server XXX.XX.XX.XX:10100;#第一個xxljob後端地址 server XXX.XX.XX.XX:10100;#第二個xxljob後端地址 } server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /xxl-job-admin/ { proxy_pass http://xxljob-server/xxl-job-admin/; index index.html index.htm; } } }
順便總結下nginx的upstream負載均衡支持5種分配方式
1.輪詢(默認方式):每個請求按照時間順序輪流分配到不同的後端服務器,如果某個後端服務器down掉後,能自動剔除。
2.weight :可以指定輪詢比率,weight和訪問機率成正比,主要應用於後端服務器異質的場景下。
upstream server { server XXX.XX.XX.XX weight=1;#第一個後端地址 server XXX.XX.XX.XX weight=2;#第二個後端地址 server XXX.XX.XX.XX weight=3;#第三個後端地址 }
3.ip_hash:每個請求按照訪問ip(即Nginx的前置服務器或者客戶端IP)的hash結果分配,這樣每個訪客會固定訪問一個後端服務器,可以解決session一致問題。
4.fair:fair顧名思義,公平地按照後端服務器的響應時間(rt)來分配請求,響應時間短即rt小的後端服務器優先分配請求。
upstream server {
fair;
server XXX.XX.XX.XX;#第一個後端地址
server XXX.XX.XX.XX;#第二個後端地址
server XXX.XX.XX.XX;#第三個後端地址
}
5.url_hash:與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同一個後端服務器,主要應用於後端服務器爲緩存時的場景下。
upstream server {
hash $request_uri;
server XXX.XX.XX.XX;#第一個後端地址
server XXX.XX.XX.XX;#第二個後端地址
server XXX.XX.XX.XX;#第三個後端地址
}