插件窝 干货文章 Nginx服务器中怎么配置非80端口的端口转发

Nginx服务器中怎么配置非80端口的端口转发

proxy 端口 Nginx 配置 831    来源:    2025-04-23

Nginx配置非80端口的端口转发

在Nginx中配置非80端口的端口转发(反向代理)是一个常见需求,以下是详细配置方法:

基本配置方法

  1. 编辑Nginx配置文件(通常在/etc/nginx/conf.d//etc/nginx/sites-available/目录下)
server {
    listen 8080;  # 监听的端口号(非80端口)
    server_name yourdomain.com;  # 你的域名或IP地址

    location / {
        proxy_pass http://backend_server:port;  # 转发到后端服务器的地址和端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

完整示例配置

假设你要将访问8080端口的请求转发到本地3000端口运行的Node.js应用:

server {
    listen 8080;
    server_name example.com;

    access_log /var/log/nginx/example.access.log;
    error_log /var/log/nginx/example.error.log;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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_cache_bypass $http_upgrade;
    }
}

多端口转发配置

如果需要将多个端口转发到不同后端服务:

# 转发8080到3000端口
server {
    listen 8080;
    server_name example.com;

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

# 转发8081到4000端口
server {
    listen 8081;
    server_name example.com;

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

配置完成后

  1. 测试Nginx配置是否正确:
sudo nginx -t
  1. 重新加载Nginx配置:
sudo systemctl reload nginx
# 或
sudo service nginx reload

注意事项

  1. 确保防火墙已开放你配置的端口(如8080)
  2. 如果使用SELinux,可能需要调整策略: bash sudo semanage port -a -t http_port_t -p tcp 8080
  3. 对于WebSocket应用,需要额外配置UpgradeConnection
  4. 如果后端服务需要HTTPS,请确保proxy_pass使用https://

高级配置选项

location / {
    proxy_pass http://backend;
    proxy_redirect off;
    proxy_buffering off;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
}

通过以上配置,你可以灵活地将Nginx配置为监听非80端口并将请求转发到其他端口或服务器。