前言
当群晖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.com
和rrshare.ioiox.com
并指向群晖的IP或者DDNS域名. - 群晖DSM默认端口为5000/5001
- Docker中人人影视Web的端口为3001
配置反向代理
控制面板
应用程序门户
反向代理服务器
新增
来源信息
- 协议http和https根据你的需求填写
- 主机名为DSM配置的域名
- 端口为对应http的80端口或者https的443端口
目的地信息
- 协议http和https根据你的需求填写
- 主机名为群晖的IP或者localhost本地地址
- 端口为DSM的默认端口5000/5001
按照以上配置同样给人人影视Web配置即可.
配置完成,现在可以直接使用域名无需端口访问你的服务了.
内网需求
以上教程均针对拥有公网80/443端口的环境,如果是家用宽带,也可以结合frp内网穿透来解决.
简单两步即可完成
- 把上述的域名指向到frp服务器.
- 本地安装frpc客户端,并配置上述的两个域名本地80/443端口穿透出去即可.
结语
更多群晖NAS相关技巧,教程及信息,请持续关注本站群晖Synology专栏:
本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.
47 条评论
添加反向代理后报错400 Request Header Or Cookie Too Large 请问是什么情况呢
博主好,请问我自建了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
还有个最大的错误就是,使用内网穿透了,路由器可以不需要端口映射.
比如nas.xxx.com的你frpc里的端口写的5665
而实际上群晖里是5000,你在frpc里要写群晖里的端口,而不是端口映射的5665.
DSM管理端口改成了5665后,在frpc里也仍然填写原来的5000吗?
DSM管理端口改成了5665后,frpc里填写5665,不用关路由器映射
DSM管理端口改为5665和端口映射5000-5665是两回事...
如果DSM里的端口你改过5665,那么frpc里就要填写5665.
我建议你先删除所有路由器上的映射,完全用内网穿透来配置比较好.这样出了问题也可以排除是什么问题.
然后一个个的来添加,首先尝试配置nas.xxx.com的,可以用你自己的服务器,也可以用我提供的frp服务器来测试 https://www.ioiox.com/archives/52.html 目前有很多网友都连接到我的frp服务器上都能正常访问.
成功之后,在来一个个的配置moments,file等你需要的门户.
用的哪种客户端? frpc还是docker?
你试着编辑frpc,把IP换成127.0.0.1试试
以下两项删除掉
use_compression = true
use_encryption = true
最后参考这篇要设置一下门户域名
https://www.ioiox.com/archives/33.html
比如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就能带端口访问套件了。
实在不行,你私密评论给我你的frps服务器信息,我这边测试一下服务器端有没问题.看我能否使用.
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服务器端了.
用nas.xxx.com:端口号 能访问套件 ,是指绑在zerotier上的域名。FRP域名如你所说,解析到frp服务器了,是不能访问本地端口的。
不好意思,是我没表述清楚。我黑裙有两个穿透,一个FRP主要用于bitwarden密码服务和移动端音视频备份使用。还有个zerotier用于电脑和nas相互备份和远程管理。本来是考虑到bitwarden密码信息走zerotier怕不安全,所以入了个阿里云轻量应用服务器建FRP,结果速度掉渣,只能沦为不挑网速的场景使用。话说zerotier官方服速度真快,延迟10ms以内,阿里延迟45ms左右。
域名没去测试了,名字多了用起麻烦,还是一个管理域名走天下最方便。
最 后谢谢博主的耐心解答!祝身体健康,事业顺心!
楼主你的域名怎么哪里?申请的是一级域名吗?
还有一个问题哈 你这个2级域名都是指向你的群晖吧?
域名是买的国际域名,二级域名也需要指向群晖.
那博主的域名需要备案么?
内容放国内服务器需要备案,否则不需
就算是国内买的,暂时不备案也没关系.
群晖上用的域名,建议就在国外服务商买,不需要备案!
请教博主,如果 frps 所在服务器已经有网站在,也就是 80 和 443 端口已经被占用,是不是就没法再通过这两个端口使用 frp 了呢?
我记得隔壁某个网站(应该是frp半官方网站)说Nginx和frp可以共用一个80端口,方式是做泛域名和反代,你可以去找那篇文章看看。
那相对就比较麻烦,需要在NGINX服务器上做重定向转发...frp穿透的每个域名都要做..
谢谢,不过用 frp 的话这个反代就没意义了吧?而家庭网络又没有 80 和 443 端口,所以很尴尬。
是的,你说的没错
没有群晖,这几篇文章都只能水贴一下。
水吧,我也串个门