因为对 Nginx 知识不多,所以在为 OMV webui 配置反向代理的时候遇到了一些问题,来问问熟悉的老哥们
我的需求是将所有 http://server:port
的 web 服务形式通过反代,以 http://server/subpath
的形式来访问。
比如 OMV webui 是 http://server:81
,那么可以访问 http://server/omv
,jellyfin 是http://server:8096
,那么可以访问 http://server/jellyfin
为此我将 OMV webui 的端口从 80 改成了 81 ,并且有了以下 nginx config
server {
listen 80;
server_name server server.local;
set $localhost 127.0.0.1;
location /omv {
return 302 $scheme://$host/omv/;
}
location /omv/ {
proxy_pass http://$localhost:81;
}
}
这段 config 并没有工作,而我记得在之前的 omv5 中我成功地如此反代了 OMV webui 。
并且令我疑惑的是,proxy_pass 对不同的应用配置表现不一样,我难以学习并为不同的应用自己编写 proxy_pass config (location 块)。例如 jellyfin 官方网站给出的 nginx config 是这样的 Jellyfin Doc
PS: 以下代码均包含在上述代码的 server 块中,与其他 location 同级
# Jellyfin
location /jellyfin {
return 302 $scheme://$host/jellyfin/;
}
location /jellyfin/ {
proxy_pass http://$jellyfin:8096/jellyfin/;
proxy_pass_request_headers on;
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;
}
对于这种可以在应用中设置 sub-path 的应用,我使用上述官方 config 反而会失败,如果我其中的
proxy_pass http://$jellyfin:8096/jellyfin/;
改为
proxy_pass http://$jellyfin:8096;
则可成功将 jellyfin 代理。
PS : 我使用过另一个需要配置 sub-path 的应用是 NextCloud , 在 config.php 中配置 'overwritewebroot' => 'sub-path'
NextCloud Doc
对于 qBittorrent,同样也有官方给出的 nginx config : NGINX Reverse Proxy for Web UI , 而这个 config 则不需要我任何改动,就可成功代理。
希望 V2 的 Nginx 大佬不吝赐教,帮助我解开这个疑惑。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.