要通过Nginx实现HTTPS负载均衡,你需要配置Nginx作为反向代理,将HTTPS请求分发到后端服务器。以下是完整的配置步骤:
获取SSL证书
.crt
或.pem
)和私钥文件(通常为.key
)Nginx主配置示例
http {
upstream backend {
# 定义后端服务器组
server backend1.example.com:443;
server backend2.example.com:443;
# 可以添加更多后端服务器
# 可选负载均衡方法:
# least_conn; # 最少连接
# ip_hash; # IP哈希
}
server {
listen 443 ssl;
server_name yourdomain.com;
# SSL证书配置
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://backend; # 指向upstream定义的后端组
# 必要的代理头部设置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# SSL相关设置
proxy_ssl_server_name on;
proxy_ssl_session_reuse off;
}
}
# 可选: HTTP重定向到HTTPS
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
}
upstream backend {
server backend1.example.com:443 max_fails=3 fail_timeout=30s;
server backend2.example.com:443 max_fails=3 fail_timeout=30s;
}
upstream backend {
server backend1.example.com:443 weight=3; # 接收3倍流量
server backend2.example.com:443 weight=1;
}
upstream backend {
ip_hash;
server backend1.example.com:443;
server backend2.example.com:443;
}
sudo nginx -t
sudo systemctl reload nginx
# 或
sudo service nginx reload
以上配置可以根据你的具体需求进行调整,如添加缓存、压缩、限流等额外功能。