nginx反向代理配置详解

  1. 基础配置

  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.  
  5.     location / {
  6.         proxy_pass http://backend_server;
  7.         proxy_set_header Host $host;
  8.         proxy_set_header X-Real-IP $remote_addr;
  9.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  10.     }
  11. }
  • listen: 监听端口

  • server_name: 域名或IP

  • location: 匹配请求路径

  • proxy_pass: 指定后端服务地址

  • proxy_set_header: 设置请求头传递信息

  1. 常用参数

  • proxy_connect_timeout: 后端连接超时时间(默认60s)

  • proxy_read_timeout: 读取后端响应超时时间(默认60s)

  • proxy_send_timeout: 发送请求到后端的超时时间(默认60s)

  • proxy_buffering off: 关闭响应缓冲(适用于实时流)

  1. SSL配置

  1. server {
  2.     listen 443 ssl;
  3.     server_name example.com;
  4.  
  5.     ssl_certificate /path/to/cert.pem;
  6.     ssl_certificate_key /path/to/key.pem;
  7.  
  8.     location / {
  9.         proxy_pass http://backend_server;
  10.         # 保持基础配置中的header设置
  11.     }
  12. }
  1. WebSocket支持

  1. location /ws/ {
  2.     proxy_pass http://websocket_server;
  3.     proxy_http_version 1.1;
  4.     proxy_set_header Upgrade $http_upgrade;
  5.     proxy_set_header Connection "upgrade";
  6. }
  1. 负载均衡

  1. upstream backend {
  2.     server 192.168.1.10:8080;
  3.     server 192.168.1.11:8080;
  4.     server 192.168.1.12:8080;
  5. }
  6.  
  7. server {
  8.     location / {
  9.         proxy_pass http://backend;
  10.     }
  11. }
  1. 缓存控制

  1. proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m;
  2.  
  3. location / {
  4.     proxy_cache my_cache;
  5.     proxy_cache_valid 200 302 10m;
  6.     proxy_cache_valid 404      1m;
  7. }

检查配置并重载

  1. nginx -t        # 验证配置
  2. nginx -s reload # 重载配置

本篇文章内容来源于:nginx反向代理配置详解