配置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;
}