利用nginx为多个xxljob配置统一入口
如何利用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;#第三个后端地址
}