在Linux环境下,Nginx凭借其高性能和轻量级特性,成为构建HTTP/HTTPS反向代理和负载均衡的首选方案。通过合理配置,可实现流量分发、高可用性及安全加密,适用于Web应用、API网关等场景。
基础环境准备
- 安装Nginx
在Ubuntu/Debian上执行:
bash
sudo apt update && sudo apt install nginx -y |
- 在CentOS/RHEL上执行:
bash
sudo yum install epel-release -y && sudo yum install nginx -y |
- 后端服务准备
假设有三台后端服务器(192.168.1.101:8080、192.168.1.102:8080、192.168.1.103:8080),需确保服务正常运行且可被Nginx访问。
HTTP流量负载均衡配置
编辑Nginx配置文件(通常为/etc/nginx/nginx.conf或/etc/nginx/conf.d/load_balancer.conf):
nginx
http { | |
upstream backend_servers { | |
server 192.168.1.101:8080 weight=3; | |
server 192.168.1.102:8080; | |
server 192.168.1.103:8080 max_fails=3 fail_timeout=30s; | |
} | |
server { | |
listen 80; | |
server_name example.com; | |
location / { | |
proxy_pass http://backend_servers; | |
proxy_set_header Host $host; | |
proxy_set_header X-Real-IP $remote_addr; | |
} | |
} | |
} |
- upstream模块:定义后端服务器组,支持权重分配(weight)、失败重试(max_fails)等策略。
- proxy_pass:将请求转发至上游服务器组。
- 负载均衡算法:默认轮询(Round Robin),可通过ip_hash或least_conn切换为会话保持或最少连接。
HTTPS流量加密配置
生成SSL证书
使用Let's Encrypt免费证书:
bash
sudo apt install certbot python3-certbot-nginx -y | |
sudo certbot --nginx -d example.com |
或手动生成自签名证书(测试环境):
bash
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt |
修改Nginx配置
nginx
server { | |
listen 443 ssl; | |
server_name example.com; | |
ssl_certificate /etc/nginx/ssl/nginx.crt; | |
ssl_certificate_key /etc/nginx/ssl/nginx.key; | |
location / { | |
proxy_pass http://backend_servers; | |
# 其他代理头配置... | |
} | |
} |
验证与优化
- 测试配置
bash
sudo nginx -t && sudo systemctl reload nginx |
- 性能调优
- 启用HTTP/2(需HTTPS):listen 443 ssl http2;
- 调整worker_processes和worker_connections参数。
- 使用keepalive保持长连接:upstream块中添加keepalive 32;。
通过以上配置,Nginx可高效实现HTTP/HTTPS流量的负载均衡,结合健康检查、会话保持等特性,显著提升系统可用性。