群晖NAS高级服务 - 配置反向代理为DSM,各套件及docker应用提供Web服务

前言

当群晖NAS所在环境拥有外网的80/443端口情况下,安装过Web Station套件后,会默认占用80/443端口为各Web提供服务.可以通过群晖NAS自带的反向代理功能,为DSM管理界面,各套件以及docker应用配置80/443端口和域名,使其可以无需加端口访问.

最近群里有人咨询我,他曾经把DSM管理界面的端口改为80,可以使用域名无端口访问DSM,但是安装了Web Station后,就无法使用> 80端口访问DSM了.那是因为80端口被Web Station占用,如果我们需要同时配置多个服务都使用80端口,那么可以使用群晖自带的> 反向代理服务器来配置

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

设置流程

需求举例:

由于安装了Web Station,80端口被占用,并提供给Web Station中部署的网站使用.
然而希望群晖DSM管理界面能使用域名无端口号访问.
也希望Docker内的人人影视Web的容器能使用域名无端口号访问.

环境配置

  • 为群晖NAS的DSM和人人影视Web配置二级域名nas.ioiox.comrrshare.ioiox.com并指向群晖的IP或者DDNS域名.
  • 群晖DSM默认端口为5000/5001
  • Docker中人人影视Web的端口为3001

配置反向代理

控制面板
应用程序门户
反向代理服务器
新增
1.jpg
来源信息

  • 协议http和https根据你的需求填写
  • 主机名为DSM配置的域名
  • 端口为对应http的80端口或者https的443端口

目的地信息

  • 协议http和https根据你的需求填写
  • 主机名为群晖的IP或者localhost本地地址
  • 端口为DSM的默认端口5000/5001

按照以上配置同样给人人影视Web配置即可.

2.jpg
3.jpg

配置完成,现在可以直接使用域名无需端口访问你的服务了.

内网需求

以上教程均针对拥有公网80/443端口的环境,如果是家用宽带,也可以结合frp内网穿透来解决.
简单两步即可完成

  1. 把上述的域名指向到frp服务器.
  2. 本地安装frpc客户端,并配置上述的两个域名本地80/443端口穿透出去即可.

结语

更多群晖NAS相关技巧,教程及信息,请持续关注本站群晖Synology专栏:

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

本文链接 https://www.ioiox.com/archives/44.html

最后修改:2019 年 11 月 21 日 04 : 22 PM

23 条评论

  1. duote

    博主好,请问我自建了FRP穿透服务器后(FRPS有开放80,445),如何用自己的二级域名访问对应群晖套件呢?比如photo.example.com访问mometns。需要在哪些位置进行设置呢?还请博主指导一下,谢谢!
    现状:路由器映射设置了内---外:443--443,5001--5667,5000--5665,群晖DSM已改为,5665,5667. 。所有二级域名已A解析到服务器IP。目前nas.example.com可以不带端口正常访问(未设置反代),其它的二级域名都无法访问。看到你的博文后,我按照教程也设置了反代,但依然无法访问。囧,不知怎么办了。
    FRPS 设置如下:
    [common]
    bind_addr = 0.0.0.0
    bind_port = 7050
    bind_udp_port = 7051
    kcp_bind_port = 7050
    vhost_http_port = 80
    vhost_https_port = 443
    dashboard_port = 7800
    dashboard_user = name
    dashboard_pwd = pwd
    token = example.com
    allow_ports = 20-20000
    max_pool_count = 3
    authentication_timeout = 600
    subdomain_host = test.example.com

    FRPC配置如下:

    [common]
    server_addr = test.example.com
    server_port = 7050
    token = example.com
    protocol = tcp

    [web-80-NAS]
    type = http
    local_ip = 192.168.0.111
    local_port = 5665
    use_compression = true
    use_encryption = true
    custom_domains = nas.example.com

    [web-443-NAS]
    type = https
    local_ip = 192.168.0.111
    local_port = 5667
    use_compression = true
    use_encryption = true
    custom_domains = nas.example.com

    [web-PHOTO]
    type = http
    local_ip = 192.168.0.111
    local_port = 10024
    use_compression = true
    use_encryption = true
    custom_domains = photo.example.com

    [web-PHOTO]
    type = https
    local_ip = 192.168.0.111
    local_port = 10025
    use_compression = true
    use_encryption = true
    custom_domains = photo.example.com

    [web-VIDEO]
    type = http
    local_ip = 192.168.0.111
    local_port = 9057
    use_compression = true
    use_encryption = true
    custom_domains = video.example.com

    [web-VIDEO]
    type = https
    local_ip = 192.168.0.111
    local_port = 9058
    use_compression = true
    use_encryption = true
    custom_domains = video.example.com

    [web-NOTE]
    type = https
    local_ip = 192.168.0.111
    local_port = 9556
    use_compression = true
    use_encryption = true
    custom_domains = note.example.com

    [web-drive]
    type = http
    local_ip = 192.168.0.111
    local_port = 9660
    use_compression = true
    use_encryption = true
    custom_domains = yun.example.com

    [web-drive]
    type = https
    local_ip = 192.168.0.111
    local_port = 9685
    use_compression = true
    use_encryption = true
    custom_domains = yun.example.com

    1. Stille
      @duote

      还有个最大的错误就是,使用内网穿透了,路由器可以不需要端口映射.
      比如nas.xxx.com的你frpc里的端口写的5665
      而实际上群晖里是5000,你在frpc里要写群晖里的端口,而不是端口映射的5665.

      1. duote
        @Stille

        DSM管理端口改成了5665后,在frpc里也仍然填写原来的5000吗?

        1. Stille
          @duote

          DSM管理端口改成了5665后,frpc里填写5665,不用关路由器映射

        2. Stille
          @duote

          DSM管理端口改为5665和端口映射5000-5665是两回事...
          如果DSM里的端口你改过5665,那么frpc里就要填写5665.

          我建议你先删除所有路由器上的映射,完全用内网穿透来配置比较好.这样出了问题也可以排除是什么问题.

          然后一个个的来添加,首先尝试配置nas.xxx.com的,可以用你自己的服务器,也可以用我提供的frp服务器来测试 https://www.ioiox.com/archives/52.html 目前有很多网友都连接到我的frp服务器上都能正常访问.

          成功之后,在来一个个的配置moments,file等你需要的门户.

    2. Stille
      @duote

      用的哪种客户端? frpc还是docker?
      你试着编辑frpc,把IP换成127.0.0.1试试
      以下两项删除掉
      use_compression = true
      use_encryption = true

      最后参考这篇要设置一下门户域名
      https://www.ioiox.com/archives/33.html

      1. duote
        @Stille

        比如nas.xxx.com,我frpc里的端口写的5665,反而能不带端口正常访问.
        frp是用的docker oldiy版。刚才反复测试了,编辑frpc,把IP换成127.0.0.1,
        删除掉use_compression = true use_encryption = true ,设了门户域名和
        端口域名cname解析,依然不能独立域名访问,甚至nas.xxx.xxx带端口访问套件也不行。
        后来路由器映射相关套件端口后,nas.xxx.xxx就能带端口访问套件了。

        1. Stille
          @duote

          实在不行,你私密评论给我你的frps服务器信息,我这边测试一下服务器端有没问题.看我能否使用.

        2. Stille
          @duote

          DSM内网穿透是不需要设置门户域名的,因为DSM是有端口的.
          门户是给无默认端口的服务,比如moments,常规来说moments是DSM之下的服务,应该是htttp://nas.xxx.com/moments 这样来访问,那么设置门户,给moments提供一个比如3333的端口和一个二级域名,比如 pic.xxx.com 那么在去frpc里 穿透3333,域名填写pic.xxx.com 这样就可以访问moments了.

          在就是如果nas.xxx.com使用内网穿透成功,在用nas.xxx.com:端口号 肯定是没法访问套件了,因为这个域名都解析到你frp服务器端了.

          1. duote
            @Stille

            用nas.xxx.com:端口号 能访问套件 ,是指绑在zerotier上的域名。FRP域名如你所说,解析到frp服务器了,是不能访问本地端口的。

          2. duote
            @Stille

            不好意思,是我没表述清楚。我黑裙有两个穿透,一个FRP主要用于bitwarden密码服务和移动端音视频备份使用。还有个zerotier用于电脑和nas相互备份和远程管理。本来是考虑到bitwarden密码信息走zerotier怕不安全,所以入了个阿里云轻量应用服务器建FRP,结果速度掉渣,只能沦为不挑网速的场景使用。话说zerotier官方服速度真快,延迟10ms以内,阿里延迟45ms左右。
            域名没去测试了,名字多了用起麻烦,还是一个管理域名走天下最方便。
            最 后谢谢博主的耐心解答!祝身体健康,事业顺心!

  2. chenchk

    楼主你的域名怎么哪里?申请的是一级域名吗?

    1. chenchk
      @chenchk

      还有一个问题哈 你这个2级域名都是指向你的群晖吧?

      1. Stille
        @chenchk

        域名是买的国际域名,二级域名也需要指向群晖.

        1. 筱熙酱
          @Stille

          那博主的域名需要备案么?

          1. Stille
            @筱熙酱

            就算是国内买的,暂时不备案也没关系.

          2. Stille
            @筱熙酱

            群晖上用的域名,建议就在国外服务商买,不需要备案!

  3. Storm

    请教博主,如果 frps 所在服务器已经有网站在,也就是 80 和 443 端口已经被占用,是不是就没法再通过这两个端口使用 frp 了呢?

    1. Stille
      @Storm

      那相对就比较麻烦,需要在NGINX服务器上做重定向转发...frp穿透的每个域名都要做..

      1. Storm
        @Stille

        谢谢,不过用 frp 的话这个反代就没意义了吧?而家庭网络又没有 80 和 443 端口,所以很尴尬。

        1. Stille
          @Storm

          是的,你说的没错

  4. 奶爸de笔记

    没有群晖,这几篇文章都只能水贴一下。

    1. Stille
      @奶爸de笔记

      水吧,我也串个门

发表评论