插件窝 干货文章 Nginx域名转发如何实现

Nginx域名转发如何实现

server proxy example Nginx 872    来源:    2025-04-23

Nginx域名转发实现指南

Nginx可以通过多种方式实现域名转发(反向代理),以下是几种常见的方法:

1. 基本域名转发配置

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend-server:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2. HTTPS域名转发

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backend-server:8080;
        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;
    }
}

# HTTP重定向到HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

3. 多域名转发到不同后端

server {
    listen 80;
    server_name example1.com;

    location / {
        proxy_pass http://backend1:8080;
        # 其他proxy设置...
    }
}

server {
    listen 80;
    server_name example2.com;

    location / {
        proxy_pass http://backend2:8080;
        # 其他proxy设置...
    }
}

4. 路径转发

server {
    listen 80;
    server_name example.com;

    location /app1/ {
        proxy_pass http://app1-server:8080/;
        # 其他proxy设置...
    }

    location /app2/ {
        proxy_pass http://app2-server:8080/;
        # 其他proxy设置...
    }
}

5. 负载均衡转发

upstream backend {
    server backend1.example.com:8080;
    server backend2.example.com:8080;
    server backend3.example.com:8080;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        # 其他proxy设置...
    }
}

注意事项

  1. 配置完成后需要重新加载Nginx配置:

    sudo nginx -t   # 测试配置是否正确
    sudo nginx -s reload  # 重新加载配置
    
  2. 确保后端服务器允许来自Nginx服务器的连接

  3. 对于生产环境,建议启用HTTPS并配置适当的SSL证书

  4. 可以根据需要添加更多的proxy_set_header指令来传递额外的请求头信息

  5. 考虑添加缓存、压缩等优化配置

需要更具体的配置或遇到什么问题吗?我可以提供更详细的帮助。