- 测试环境:
- server1 服务器上安装了 nginx + tomcat01
- server2 服务器上只安装了 tomcat02
- server1 IP 地址:192.168.2.88
- server2 IP 地址:192.168.2.89
- 安装步骤:
- 1. 在server1 上安装配置 nginx + nginx_upstream_jvm_route
- shell $> wget -c http://sysoev.ru/nginx/nginx-0.7.61.tar.gz
- shell $> svn checkout http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/ nginx-upstream-jvm-route-read-only
- shell $> tar zxvf nginx-0.7.61
- shell $> cd nginx-0.7.61
- shell $> patch -p0 < ../nginx-upstream-jvm-route-read-only/jvm_route.patch
- shell $> useradd www
- shell $> ./configure --user=www --group=www --prefix=/usr/local//nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-upstream-jvm-route-read-only
- shell $> make
- shell $> make install
- 2.分别在两台机器上安装 tomcat和java (略)
- 设置tomcat的server.xml, 在两台服务器的tomcat的配置文件中分别找到:
-
- 分别修改为:
- Tomcat01:
-
- Tomcat02:
-
- 并在webapps下面建立aa文件夹,在里面建立要测试的index.jsp文件,内容如下:
- 88
-
-
- 两个tomcat一样只需要修改红色的部分
- 分别启动两个tomcat
- 3.设置nginx
- shell $> cd /usr/local/nginx/conf
- shell $> mv nginx.conf nginx.bak
- shell $> vi nginx.conf
- ## 以下是配置 ###
- user www www;
- worker_processes4;
- error_log logs/nginx_error.log crit;
- pid /usr/local/nginx/nginx.pid;
- #Specifies the valuefor maximum file descriptors that can be opened bythis process.
- worker_rlimit_nofile51200;
- events
- {
- use epoll;
- worker_connections2048;
- }
- http
- {
- upstream backend {
- server 192.168.2.88:8080 srun_id=a;
- server 192.168.2.89:8080 srun_id=b;
- jvm_route $cookie_JSESSIONID|sessionid reverse;
- }
- include mime.types;
- default_type application/octet-stream;
- #charset gb2312;
- charset UTF-8;
- server_names_hash_bucket_size128;
- client_header_buffer_size 32k;
- large_client_header_buffers4 32k;
- client_max_body_size 20m;
- limit_rate 1024k;
- sendfile on;
- tcp_nopush on;
- keepalive_timeout60;
- tcp_nodelay on;
- fastcgi_connect_timeout300;
- fastcgi_send_timeout300;
- fastcgi_read_timeout300;
- fastcgi_buffer_size 64k;
- fastcgi_buffers4 64k;
- fastcgi_busy_buffers_size 128k;
- fastcgi_temp_file_write_size 128k;
- gzip on;
- #gzip_min_length 1k;
- gzip_buffers 4 16k;
- gzip_http_version1.0;
- gzip_comp_level2;
- gzip_types text/plain application/x-javascript text/css application/xml;
- gzip_vary on;
- #limit_zone crawler $binary_remote_addr 10m;
- server
- {
- listen 80;
- server_name 192.168.2.88;
- index index.html index.htm index.jsp;
- root /var/www;
- #location ~ .*\.jsp$
- location / aa/
- {
- proxy_pass http://backend;
- proxy_redirect off;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- }
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
- {
- expires 30d;
- }
- location ~ .*\.(js|css)?$
- {
- expires 1h;
- }
- location /Nginxstatus {
- stub_status on;
- access_log off;
- }
- log_format access'$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" $http_x_forwarded_for';
- # access_log off;
- }
- }
- 4.测试
- 打开浏览器,输入:http://192.168.2.88/aa/
- 刷新了N次还都是88,也就是补丁起作用了,cookie 值也获得了,为了测试,我又打开了“遨游浏览器”(因为session 和 cookie问题所以从新打开别的浏览器),输入网址:
- http://192.168.2.88/aa/
- 显示89,刷新N次后还是89,大家测试的时候如果有疑问可一把 nginx 配置文件的
- srun_id=a srun_id=b 去掉,然后在访问,就会知道页面是轮询访问得了!!
推荐阅读
- Go|Docker后端部署详解(Go+Nginx)
- 后台|NATAPP内网穿透通过nginx实现一个端口访问多个不同端口服务
- nginx-1.20.2安装使用
- NGINX 创始人 Igor Sysoev 退出 F5(20 年发展“简史”令人肃然起敬)
- spring|spring cloud Eureka简单负载均衡实现
- Nginx|Nginx~从入门到入坑。
- nginx|Mac配置PHP环境(brew安装nginx+php)
- 使用ngx_lua构建高并发应用(2)
- svn|前瞻(Spring Boot 2.4.0 第二个里程碑版本发布)
- nginx cache踩坑