最近折腾服务器把 Aria2、H5AI、Jellyfin、Jupyter 等集合到一个端口访问(因为开端口映射实在是一件麻烦事),于是需要经常用到 Nginx 的反向代理。之前的配置文件的效果一直都不是最完美,瑕疵体现在 redirect 之后就会忽略到子路径导致 404。在网上多方搜索之后我终于找到了一个总体靠谱的写法(感觉 Nginx 的流行度还是比不上 Apache),记下来留自己备用。

location /SUB_PATH {
    return 302 $scheme://$host:$port/SUB_PATH/;
}
location /SUB_PATH/ {
    proxy_pass xxxxx;
    proxy_pass_request_headers on;
    proxy_redirect ~^/(.*) $scheme://$host:$port/SUB_PATH/$1;        
    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;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    # proxy_buffering off; 
}