参考资料

  1. Nginx 启动、停止、重启、加载配置详细说明以及案例
  2. Nginxlocalhost 路由匹配规则详细说明以及案例
  3. nginx 配置https
  4. Nginx在Web开发中的应用
  5. Nginx编译安装详细说明以及案例
  6. Nginx用户cookie模块详细说明以及案例
  7. nginx 配置静态资源
  8. Nginx配置文件中通过location块匹配静态资源类型,并添加缓存响应头

Nginx 作为反向代理的功能详解及配置示例

1. 负载均衡

功能:将客户端请求分发到多个后端服务器,提高并发处理能力。
配置示例

http {
    upstream backend {
        server 192.168.1.10:8080 weight=3;  # 权重 3
        server 192.168.1.11:8080;          # 默认权重 1
        server 192.168.1.12:8080 backup;   # 备用服务器
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend;
        }
    }
}

说明

  • upstream 定义后端服务器组

  • weight 设置权重(3:1 比例分配请求)

  • backup 标记为备用服务器(仅当主服务器不可用时启用)


2. 请求转发(基于路径或域名)

功能:根据 URL 路径或域名将请求代理到不同的后端服务。
配置示例

server {
    listen 80;
    server_name api.example.com;

    location /user {
        proxy_pass http://user-service:8000;
    }

    location /order {
        proxy_pass http://order-service:8001;
    }
}

说明

  • api.example.com/user → 转发到 user-service

  • api.example.com/order → 转发到 order-service


3. SSL 终端(HTTPS 卸载)

功能:在 Nginx 上终止 HTTPS 加密,后端服务器使用 HTTP,减少计算负担。
配置示例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

说明

  • Nginx 处理 HTTPS 加密/解密

  • 后端服务器只需运行 HTTP


4. 缓存加速

功能:缓存静态或动态内容,减少后端服务器压力。
配置示例

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    listen 80;
    location / {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 1h;  # 缓存 200 响应 1 小时
        proxy_cache_use_stale error timeout updating;
    }
}

说明

  • proxy_cache_path 定义缓存存储位置

  • proxy_cache_valid 设置缓存有效期


5. WebSocket 代理

功能:支持 WebSocket 长连接代理。
配置示例

server {
    listen 80;
    location /ws/ {
        proxy_pass http://websocket-backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

说明

  • UpgradeConnection 头确保 WebSocket 正常工作


6. 健康检查(自动剔除故障节点)

功能:检测后端服务器状态,自动剔除不可用节点。
配置示例

upstream backend {
    server 192.168.1.10:8080 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8080 max_fails=3 fail_timeout=30s;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
        proxy_next_upstream error timeout http_500 http_502;
    }
}

说明

  • max_fails=3 允许 3 次失败

  • fail_timeout=30s 30 秒后重试

  • proxy_next_upstream 定义哪些错误触发切换服务器


总结

Nginx 作为反向代理的核心功能包括:
负载均衡(轮询、权重、IP 哈希)
请求转发(基于路径或域名)
HTTPS 卸载(SSL 终端)
缓存加速(减少后端压力)
WebSocket 代理(支持长连接)