配置nginx负载均衡

nix-shell -p nginx neovim git
# 一个作为主服务器用来分配权重
# 其他作为负载均衡的服务器,多台
  • 配置 参考配置: https://gitee.com/jcleng/blog/blob/master/_posts/%E5%9C%A8nix%E5%8C%85%E7%AE%A1%E7%90%86%E9%87%8C%E9%9D%A2%E9%85%8D%E7%BD%AEmnmp%E7%8E%AF%E5%A2%83.md

# 配置多台服务器,已经出现问题请down掉,重载配置: nginx -s reload
# 这里使用ip_hash
upstream web_ip_hash {
        ip_hash;
        # server 127.0.0.1:80 down;
        server 127.0.0.1:80 weight=5 max_conns=50;
        server 127.0.0.1:82 down;
        server 127.0.0.1:83 down;
}

# 用8070端口做演示
server {
        listen 8070;
        server_name lxx.test2.net;
        index index.html index.htm index.php;
        location / {
                proxy_pass http://web_ip_hash;
        }
}
  • 灰度发布,通过请求头转发到不同的服务

# 通过请求头 X-Forwarded-For 不同的参数进行发布
docker run -itd -p 8099:8099 -v /home/jcleng/desktop/work/nginxconf:/etc/nginx/conf.d/ --name=nginx nginx
# server.conf 文件如下

upstream backend_server_1 {
    server 172.17.0.1:12345;
}

upstream backend_server_2 {
    server 172.17.0.1:45678;
}

server {
    listen 8099;
    # server_name example.com;

    location / {
        if ($http_x_forwarded_for = "canary") {
            proxy_pass http://backend_server_1;
        }

        proxy_pass http://backend_server_2;
    }
}

# 重启nginx
sudo docker exec -it nginx bash
nginx -t
nginx -s reload
# 验证
http GET 127.0.0.1:8099 X-Forwarded-For:canary
  • 配置证书

server {
   listen 80;
   server_name www.leng2011.net;

   location / {
      return 301 https://www.leng2011.net;
   }
}

server {
    listen 443 ssl;
    server_name www.leng2011.icu;
    # 就是 bundle.crt
    ssl_certificate /etc/nginx/crt/ssl.crt;
    ssl_certificate_key /etc/nginx/crt/key.txt;
}