插件窝 干货文章 nginx怎么代理多个服务器

nginx怎么代理多个服务器

server proxy 8080 Nginx 329    来源:    2025-04-24

Nginx 代理多个服务器的配置方法

Nginx 可以通过多种方式代理多个后端服务器,以下是几种常见的方法:

1. 基于不同域名的代理

server {
    listen 80;
    server_name domain1.com;

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

server {
    listen 80;
    server_name domain2.com;

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

2. 基于路径的代理

server {
    listen 80;
    server_name example.com;

    location /app1/ {
        proxy_pass http://server1:8080/;
        proxy_set_header Host $host;
    }

    location /app2/ {
        proxy_pass http://server2:8080/;
        proxy_set_header Host $host;
    }
}

3. 使用 upstream 实现负载均衡

upstream backend {
    server server1:8080;
    server server2:8080;
    # 可以添加更多服务器
    # server server3:8080;
}

server {
    listen 80;
    server_name example.com;

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

4. 加权负载均衡

upstream backend {
    server server1:8080 weight=3;  # 3/5 的请求
    server server2:8080 weight=2;  # 2/5 的请求
}

5. 不同负载均衡策略

upstream backend {
    # 最少连接数策略
    least_conn;

    server server1:8080;
    server server2:8080;
    server server3:8080;
}

6. 健康检查

upstream backend {
    server server1:8080 max_fails=3 fail_timeout=30s;
    server server2:8080 max_fails=3 fail_timeout=30s;
}

配置完成后

  1. 测试配置是否正确:
nginx -t
  1. 重新加载配置:
nginx -s reload

注意事项

  • 确保后端服务器可以访问
  • 注意代理路径中的斜杠问题
  • 根据实际需求设置适当的超时参数
  • 考虑添加 SSL/TLS 加密以提高安全性

需要更具体的配置或有其他问题,请告诉我您的具体需求。