You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理配置:端口访问自动跳转至对应location

解决Nginx端口跳转至对应location的问题

你的核心问题是Nginx没有监听32400/8181/32800这些端口,所以用户直接访问这些端口时,请求根本没经过Nginx,自然跳转配置不会生效。以下是正确的配置方案:

步骤1:配置端口-路径映射规则

在http块最顶部添加map指令,用来根据端口匹配对应的跳转路径:

map $server_port $redirect_path {
    32400   /plex/;
    8181    /tautulli/;
    32800   /torrent/;
}

步骤2:添加监听端口的Server块

新增一个server块,监听需要跳转的SSL端口,并配置跳转规则:

server {
    listen 32400 ssl;
    listen 8181 ssl;
    listen 32800 ssl;
    server_name site;

    ssl_certificate /etc/ssl/example.pem;
    ssl_certificate_key /etc/ssl/example.key;

    # 跳转到对应location路径
    return 301 https://site$redirect_path;
}

完整配置示例

整合后的完整Nginx配置如下:

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    # 端口-路径映射规则
    map $server_port $redirect_path {
        32400   /plex/;
        8181    /tautulli/;
        32800   /torrent/;
    }

    server {
        listen 80;
        server_name site;
        return 301 https://$server_name$request_uri;
    }

    # 处理带端口的HTTPS请求,跳转至对应location
    server {
        listen 32400 ssl;
        listen 8181 ssl;
        listen 32800 ssl;
        server_name site;

        ssl_certificate /etc/ssl/example.pem;
        ssl_certificate_key /etc/ssl/example.key;

        return 301 https://site$redirect_path;
    }

    # 主HTTPS服务,处理反向代理
    server {
        listen 443 ssl;
        server_name site;

        ssl_certificate /etc/ssl/example.pem;
        ssl_certificate_key /etc/ssl/example.key;

        location /torrent/ {
                proxy_pass https://127.0.0.1:32800/;
                proxy_http_version 1.1;
                proxy_set_header   Host               127.0.0.1:32800;
                proxy_set_header   X-Forwarded-Proto  $scheme;
                proxy_set_header   X-Forwarded-Host   $http_host;
                proxy_set_header   X-Forwarded-For    $remote_addr;
                proxy_set_header   X-Real-IP          $remote_addr;
                proxy_cookie_path / "/; Secure";
        }

        location /plex/ {
                rewrite /plex(/.*) $1 break;

                proxy_pass https://127.0.0.1:32400/;
                proxy_set_header Accept-Encoding "";
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $http_host;
                proxy_cache_bypass $http_upgrade;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_redirect off;

                sub_filter '/web/' '/plex/web/';
                sub_filter_types *;
                sub_filter_once off;
        }

        location /tautulli/ {
            proxy_pass https://127.0.0.1:8181;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_read_timeout 90;
            proxy_set_header X-Forwarded-Proto $scheme;
            set $xforwardedssl "off";
            if ($scheme = https) {
                set $xforwardedssl "on";
            }
            proxy_set_header X-Forwarded-Ssl $xforwardedssl;
            proxy_redirect ~^(http(?:s)?://)([^:/]+)(?::\d+)?(/.*)?$ $1$2:$server_port$3;
        }
    }
}

额外建议

  • 确保后端服务(Plex/Tautulli/Torrent)仅监听127.0.0.1,禁止监听0.0.0.0,这样外部无法直接绕过Nginx访问服务。
  • 配置完成后,执行nginx -t检查配置语法,无误后执行nginx -s reload重启Nginx生效。

内容的提问来源于stack exchange,提问作者Vez Figo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:25:00