2024年9月25日,推荐使用1panel面板管理,功能更强大,而且nginx proxy manager镜像太大了 以下旧文仅供参考:
常规配置不再赘述。
一般家用ip不给开443端口,所以我用8443替代https的默认443端口来反代。
前置条件:路由器将8443端口转发到npm服务器的443服务端口。
问题
群晖的套件服务无法复用群晖的域名
群晖的套件服务有些是通过路径区分,有些是通过端口区分,这些服务还有有重定向(坑点)。
如果你想让这些服务都共用群晖的域名,那么就会碰到一些问题:
解决方法
transmission:端口区分
transmission的问题是静态资源加载不出来。
解决办法:除了默认的配置,还需要添加custom location:

location ^~ /transmission {
proxy_pass http://192.168.100.5:9091;
}按上述改了之后,就可以用https://群晖域名:8443/transmission访问transmission套件了。
参考
至于为啥非得加一个custom location,而且内容和界面上配置的是一样的,那我就不知道了。
当然,你如果不想重用群晖的域名,那直接用一个新域名配置反代即可:
这样不会出现静态js、css加载不出的问题
SurveillanceStation:路径区分
群晖的摄像机管理套件SurveillanceStation,是以路径挂载在群晖域名下区分管理的。
SurveillanceStation内置服务在接收到界面请求的时候会有一个重定向的动作,而这个重定向链接端口为访问来源的端口。
这时候你要问了,这不是很正常吗?对,这是正确的流程。
但是npm并不知道外部真正的访问端口是8443(路由器端口转发的),所以SurveillanceStation也不知道真正的访问端口。npm告诉SurveillanceStation它的默认端口是443,所以SurveillanceStation重定向的地址也是443端口:
xxx:8443 -> npm -> xxx:443 -> SurveillanceStation -> redirectxxx:443/webman
所以解决这个问题,我们除了添加套件服务的路径,还得手动改写请求头里的host端口:

location ^~ /webman {
proxy_pass http://192.168.100.5:5000; // 这里保持群晖的ip
proxy_set_header Host $host:8443; #这里是重点,这样配置才不会丢失端口
}按上述改了之后,就可以用https://群晖域名:8443/webman访问SurveillanceStation套件了。
ttyd:websocket协议升级
直接反代ttyd会报错,因为ws协议没有升级,location也不能直接写ttyd,这里给出解决方法:
location /ttyd {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 1d; # dont kill connection after 60s of inactivity
proxy_pass http://127.0.0.1:7681/;
}按上述改了之后,就可以用https://群晖域名:8443/ttyd访问ttyd套件了。
alist:修改服务配置
群晖部署的alist套件,默认是5244端口,站点默认路径是根目录。请求的静态资源路径如:https://a.b.c:8443/alist/assets/index.f101cd32.js。所以一般是单独使用一个域名去代理。
如果想要代理到群晖的路径下,那么需要改alist的配置:如何对子目录进行反向代理,链接里的配置仅供参考,npm里不会生效,要采用transmission一样的方式。
- 改根路径为:
alist,进入群晖控制台,以root身份修改alist里的config.json:
/volume1/@appdata/alist3# vim config.json:
{
"force": false,
"site_url": "/alist",
...
}- 在群晖套件中心重启alist
- 配置npm

location ^~ /alist {
proxy_pass http://192.168.100.5:5244; #需要代理的服务器内网访问方式
}按上述改了之后,就可以用https://群晖域名:8443/alist访问alist套件了。