乐闻世界logo
搜索文章和话题

Nginx 如何配置反向代理?

2月21日 16:57

Nginx 如何配置反向代理?

Nginx 反向代理是指 Nginx 服务器接收客户端请求,然后将请求转发到后端服务器,再将后端服务器的响应返回给客户端。客户端只知道 Nginx 服务器的存在,不知道实际处理请求的后端服务器。

基本配置示例:

nginx
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; 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; } } upstream backend_server { server 192.168.1.100:8080; server 192.168.1.101:8080; }

关键配置指令说明:

  1. proxy_pass:指定后端服务器地址,可以是 IP 地址、域名或 upstream 组名

  2. proxy_set_header:设置转发给后端服务器的请求头

    • Host:保留原始请求的主机名
    • X-Real-IP:记录客户端真实 IP
    • X-Forwarded-For:记录请求经过的代理链
    • X-Forwarded-Proto:记录原始协议(http/https)
  3. upstream:定义后端服务器组,实现负载均衡

常用反向代理配置选项:

nginx
location /api/ { proxy_pass http://backend_api; # 超时设置 proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; # 缓冲设置 proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; # WebSocket 支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 禁用重定向 proxy_redirect off; }

负载均衡策略:

  1. 轮询(默认):按顺序分配请求
  2. least_conn:分配给活动连接数最少的服务器
  3. ip_hash:根据客户端 IP 进行哈希分配,保证同一 IP 的请求到同一服务器
  4. least_time:分配给响应时间最短的服务器(需要商业版)

实际应用场景:

  • 将请求转发到多个应用服务器
  • 隐藏后端服务器真实 IP
  • 统一入口,简化客户端配置
  • 实现 SSL 终止
  • 缓存静态内容
  • WebSocket 代理
标签:Nginx