通过群晖的 QuickConnect 访问第三方应用

QuickConnect 是群晖自带的一个局域网穿透的服务,大概原理是:

DSM连接到群晖的服务器上进行注册并建立一条TCP通路,外网用户在访问QuickConnect时,可以通过这条TCP通路回来。这条TCP通路,其实是连到DSM的 Nginx 服务上的。

既然是连到 Nginx,那么修改 Nginx的反向代理配置,就能访问其他的第三方应用了。
通过查看 /etc/nginx/nginx.conf 配置中 50005001 的监听端口的配置,发现 Nginx 会读取以下位置的配置:

        include app.d/dsm.*.conf;
        include /usr/syno/share/nginx/conf.d/dsm.*.conf;
        include conf.d/dsm.*.conf;

前后两个位置的配置,在修改反向代理的配置后会重置,只有 /usr/syno/share/nginx/conf 是永久保留的。
所以,在 /usr/syno/share/nginx/conf.d 目录下创建名为 dsm.*.conf 的配置文件。

我这举两个例子:

  • transmission 配置

dsm.transmission.conf

location ^~ /transmission {
            proxy_pass      http://127.0.0.1:9091$request_uri;
            proxy_redirect  off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
  • emby 配置

dsm.emby.conf

location ^~ /emby {
            proxy_pass      http://127.0.0.1:8096$request_uri;
            proxy_redirect  off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

访问效果:

最后
配置完成后执行以下两个命令测试和重新加载配置

  • nginx -t #测试配置
  • nginx -s reload #重新加载配置