Nginx配置反向代理和负载均衡

配置文件注意事项:

● 每句结束都需要以 ; 结尾
● 一个location 里面只能配置一个proxy_pass 属性
● upstream 定义的变量名不可以出现 _ (下划线)

环境搭建

在tomcat的webapps目录下有一个应用项目:nginxweb.war
在这里插入图片描述
启动tomcat ,进行访问:http://139.196.79.22:8099/nginxweb/user/test01
Nginx配置反向代理和负载均衡_第1张图片

反向代理

配置nginx
但是我们不想直接访问tomcat, 接下来,配置nginx反向代理,通过nginx转发此次请求:


        location /nginxweb {
            proxy_pass http://localhost:8099/nginxweb;
        }
        

Nginx配置反向代理和负载均衡_第2张图片
重新加载nginx配置


./nginx -s reload

此时浏览器访问:http://139.196.79.22:80/nginxweb/user/test01
此时这个url,的意义不一样,/nginxweb 这个代表在nginx配置文件中配置的:location 中的 /nginxweb,首先通过这个找到对应的配置,然后再将/user/test01 拼接到 proxy_pass 配置的路径后面
Nginx配置反向代理和负载均衡_第3张图片

负载均衡

需求:
目前一个项目部署在两台tomcat中,这个项目是集群化部署,现在使用nginx做负载均衡:
Nginx配置反向代理和负载均衡_第4张图片

 upstream nginxwebs{
        server localhost:8099;
        server localhost:8091;
        }
    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }


        location /nginxwebpath {
            proxy_pass http://nginxwebs/nginxweb/;
        }

nginxwebs相等于一个临时变量,当有请求到来时,比如:http://139.196.79.22/nginxwebpath/user/test01
nginx根据 nginxwebpath 这个识别到本次请求应该交给哪一个location处理,然后经过负载均衡需选择出一个server 然后替换掉nginxwebs ,此时就变成了:http://localhost:8091/nginxweb/ 然后再拼接上user/test01
那么此时的url就变成了:http://139.196.79.22/nginxwebpath/user/test01

Nginx配置反向代理和负载均衡_第5张图片

重新加载nginx配置

./nginx -s reload

Nginx配置反向代理和负载均衡_第6张图片

Nginx负载均衡策略及配置:

轮询
默认策略,每个请求按时间顺序逐⼀分配到不同的服务器,如果某⼀个服务器下线,能⾃动剔除

upstream lagouServer{
 server 111.229.248.243:8080;
 server 111.229.248.243:8082;
}
location /abc {
 proxy_pass http://lagouServer/;
}

Nginx配置反向代理和负载均衡_第7张图片

weight (权重)
weight代表权重,默认每⼀个负载的服务器都为1,权重越⾼那么被分配的请求越多(⽤于服务器 性能不均衡的场景)

upstream lagouServer{
 server 111.229.248.243:8080 weight=1;
 server 111.229.248.243:8082 weight=2;
}

Nginx配置反向代理和负载均衡_第8张图片

ip_hash
ip_hash策略可以在客户端IP保持不变的情况下,将其发出的请求始终路由到一台tomcat服务器上,实现会话粘滞,避免了不同服务器实例之间session共享问题;

upstream lagouServer{
 ip_hash;
 server 111.229.248.243:8080;
 server 111.229.248.243:8082;
}

Nginx配置反向代理和负载均衡_第9张图片

你可能感兴趣的:(nginx,负载均衡,tomcat)