1

配置upstream

打开nginx.conf添加如下配置
image.png

upstream模块配置中:

upstream my_test_stream {
    #指定需要负载服务的地址和端口
    server 192.168.192.11:8900 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.192.11:8901 weight=2 max_fails=3 fail_timeout=30s;
}
  • weight: 设置后端服务器的权重,用于调整负载均衡比例。不需要可以去掉该参数
  • max_fails: 定义了后端服务器的最大失败次数。如果达到这个失败次数,则该服务器被标记为暂时不可用。
  • fail_timeout: 定义了服务器暂时不可用的时间,超过这个时间后,Nginx 会尝试重新将请求发送到该服务器。

配置server

image.png

以下配置需要添加,否则upstream的max_fails、 fail_timeout不会生效

#与被代理服务器建立连接的超时时间
proxy_connect_timeout 5s;
#获取被代理服务器的响应最大超时时间,当与被代理服务器通信出现指令值指定的情况时,认为被代理出错,并将请求转发给上游服务器组中的下一个可用服务器
proxy_read_timeout 10s;
proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
#转发请求最大次数
proxy_next_upstream_tries 3;
proxy_next_upstream_timeout 10s;

default.d/*.conf配置

在default.d目录下分别创建test-demo-8900.conf、test-demo-8901.conf两个配置文件,其中test-demo-8900.conf的配置为:

server {
    listen       8900;
    server_name  192.168.192.11;
    root         /usr/share/nginx/html;

   
    
    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }

    location ^~/demo/ {
        proxy_pass http://localhost:8800/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "DELETE,POST,GET,OPTIONS";
        add_header Access-Control-Allow-Headers "Origin,Authorization,Accept";
        add_header Access-Control-Allow-Credentials true;
    }
}

以上便实现了通过192.168.192.11:80端口,调用demo相关的接口,会负载均衡到192.168.192.11:8900、192.168.192.11:8901两个服务器上


liumang
343 声望36 粉丝

一直在思考怎么结合自己擅长的知识做些什么。现在有了好主意坚持一年,看看会有什么改变,有什么美好的事情发生。