Nginx反向代理实战:Linux下实现HTTP/HTTPS流量负载均衡

119 阅读2分钟

微信图片_20230808094553.png在Linux环境下,Nginx凭借其高性能和轻量级特性,成为构建HTTP/HTTPS反向代理和负载均衡的首选方案。通过合理配置,可实现流量分发、高可用性及安全加密,适用于Web应用、API网关等场景。

基础环境准备****

1. 安装Nginx
在Ubuntu/Debian上执行:

2. 

bash

3. 

4. 

 sudo apt update && sudo apt install nginx -y

5. 在CentOS/RHEL上执行:

6. 

bash

7. 

8. 

 sudo yum install epel-release -y && sudo yum install nginx -y

9. 

10. 后端服务准备
假设有三台后端服务器(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流量加密配置****

1. 

生成SSL证书
使用Let's Encrypt免费证书:

2. 

3. 

bash

4. 

5. 

 sudo apt install certbot python3-certbot-nginx -y
 sudo certbot --nginx -d example.com

6. 

或手动生成自签名证书(测试环境):

7. 

8. 

bash

9. 

10. 

 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

11. 

12. 

修改Nginx配置

13. 

14. 

nginx

15. 

16. 

 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;
 # 其他代理头配置...
 }
 }

17. 

验证与优化****

1. 测试配置

2. 

bash

3. 

4. 

 sudo nginx -t && sudo systemctl reload nginx

5. 

6. 性能调优

· 启用HTTP/2(需HTTPS):listen 443 ssl http2;

· 调整worker_processes和worker_connections参数。

· 使用keepalive保持长连接:upstream块中添加keepalive 32;。

通过以上配置,Nginx可高效实现HTTP/HTTPS流量的负载均衡,结合健康检查、会话保持等特性,显著提升系统可用性。