
因为群晖没有公网 IP ,所以使用 Frp 进行内网穿透。
目前 Frp 已经能够实现IP+端口进行访问,但是 Frp 要进行 http 访问只能是“不同的域名+相同的端口”进行访问。
我希望能保持“相同的域名+不同的端口”来进行访问,同时加上SSL 证书。
有尝试过在服务器再加上反代的方式来访问,但是都不能实现我想要的效果。
请教各位大神这个要怎么弄?
流程图示意如下:

1 JamesR 2023 年 10 月 17 日 1.公网服务器上面配个 Apache 。 2.Apache 配置多个虚拟主机(域名相同,基于端口不同的)。 3.每个虚拟主机配置反向代理,代理本地 Frp 穿透好的端口。 需要学习下 Apache 的安装,虚拟主机和 SSL 的配置。 |
2 PXW139 2023 年 10 月 17 日 这不 nginx 反代一下就可以,每个服务一个配置文件就行 |
3 flashBee233 2023 年 10 月 17 日 可以参考一下我的这个配置,我这也是自己摸索的,如有不对请指点 |
4 flashBee233 2023 年 10 月 17 日 |
5 PXW139 2023 年 10 月 17 日 哦,应该还有更简单的,直接一个配置文件搞定 同时监听所有提供服务的端口,判断入口端口,对应到目标端口完事 if ( $server_port = 5679 ){ set $my_port 5678;} 反代里面 proxy_pass http://127.0.0.1:$my_port; |
6 opengps 2023 年 10 月 17 日 反代为什么达不到你要的效果?哪一点卡住的? |
7 ysc3839 2023 年 10 月 17 日 via Android 在 NAS 上设置 https ,监听不同端口,frp 只进行端口转发即可。 |
8 skyzwb 2023 年 10 月 17 日 很简单在你公有云服务器上安装一个 nginx Proxy Manager ,然后配置就行了,很简单证书也能一件申请 |
9 itechify PRO 7 楼和我的想法一致 |
10 hyperbin 2023 年 10 月 17 日 via Android 弄个*.domain.com 的证书,然后 ngnix 到子域名,访问时 a.domain.com 和 b.domain.com 就是不同的服务了 |
11 superchijinpeng 2023 年 10 月 17 日 caddy 直接配 |
12 guanzhangzhang 2023 年 10 月 17 日 你搞组网后,直接三层就通了就没这么多事情了 |
13 y1y1 2023 年 10 月 17 日 反代 |
14 ryc111 2023 年 10 月 17 日 讲一个我自己目前搞的方式: - frp -> 一堆端口 ( serv1:10001 ,serv2:10002 ,serv3: 10003 ,serv4: 10004....) FYI,我目前转用了 rathole ,可以映射到 vps 的 127.0.0.1,而不是暴露在外。 - 证书申请的时候设置泛域名: 使用 *.your.domain - 使用 nginx/caddy/etc 对于各个服务进行反代: serv1.your.domain -> 10001 ... 以此类推 更简单的方法就是用 frpc 的 vhostHTTPSPort 。但是这样的话就需要自己管理证书,也可以自签名。 |
15 devliu1 2023 年 10 月 17 日 1. https 可以在反代配置 2. frp 多配置几个端口就好,一个端口也行,反代通过 host 判断 3. 如果反代部署在本地,端口通过 FRP 暴露在远程,是获取不到用户 IP 真实的(因为是通过 frpc 连接的反代),可以配置 proxy protocol |
16 linuxgo 2023 年 10 月 17 日 我用过 nps 是同一域名指定不同端口访问 |
17 charce OP @flashBee233 我看了你的配置文件,是通过多个子域名来访问的,跟我想要的不太一样。 因为我同时有用 ipv6 在访问,所以才会想要保持同一个域名,这样证书管理也简单一点。 |
18 charce OP |
19 charce OP |
21 DigitalG 2023 年 10 月 17 日 我记得群晖的 docker 应用 可以配合 web station 制作门户访问的方式来着? 类似 https://xxxx.com:a_fixed_port/path 指向服务。域名和端口是固定的,一个 path 指向一个服务。 |
24 flashBee233 2023 年 10 月 17 日 @charce 可以申请个免费的泛域名证书 |
25 BaseException 2023 年 10 月 17 日 nginx 写多个配置文件就行。listen 不同的端口。 我有几个服务就是 - https://emby.940304.xyz:23399 - https://emby.940304.xyz:16790 楼主想要实现的是我这种吗 |
26 BaseException 2023 年 10 月 17 日 |
27 PXW139 2023 年 10 月 17 日 最简单的示范 其他配置往里面加就行 ``` server { listen 9080; listen 9081; listen 9082; server_name www.abc.xyz; index index.php index.html index.htm default.php default.htm default.html; if ( $server_port = 9080 ){ set $my_port 8080;}#端口自行修改为映射端口 if ( $server_port = 9081 ){ set $my_port 8081;} if ( $server_port = 9082 ){ set $my_port 8082;} location / { proxy_pass http://127.0.0.1:$my_port; } } ``` @PXW139 |
28 charce OP @BaseException #25 是这个效果,要怎么弄呢? |
29 jccaipc 2023 年 10 月 17 日 Mark 关注下,跟 LZ 一样有此需求,前期 nginx 反向代理也是搞过,不过失败了 |
33 BaseException 2023 年 10 月 17 日 @charce #28 既然 “目前 Frp 已经能够实现 IP+端口进行访问” 那么 nginx +ssl 就能解决了,监听不同端口,不同端口 proxy_pass 到 frps 服务端本地不同的端口就行了 |
34 charce OP @BaseException #33 我只懂得在宝塔面板里面创建网站,然后用面板自带的 GUI 来配置反代,有尝试着去配置一下,都没有成功,如果可以您可以分享一下经验,谢谢。 |
35 ryc111 2023 年 10 月 18 日 @charce ipv6 和这个没关系呀,ipv6 只是一个地址而已。 我获取的证书是泛域名的证书。 *.domain ,放在 vps 上自动更新。 为了方便,域名解析那也可以直接设置泛域名 *.domain 都指向 vps ,这样,你想要什么子域名,都直接用。 看到你用宝塔,所以更推荐你使用我这种配置,每个服务都用一个子域名,其实和端口后置也差不多对吧,实在不行你的域名写成: 端口.域名 : 5000.domain.com 这样嘛。 因为这样子,你只要在宝塔里面: 1,添加站点,2,配置 ssl ,3 添加反向代理。 不需要自己手动配置任何 nginx 配置文件,都是点点点就能完成的。 |
36 charce OP @ryc111 #35 这个确实也是一种思路,操作起来也不复杂。 但是有个问题是,IPv6 的 80/443 端口是被封的,所以如果用子域名,IPv6 就会访问不了。 所以要保证 IPv4 和 IPv6 两种情况都能访问的话,就只能用高位端口。 我现在保留 IPv6 是考虑到在有 IPv6 环境下,直连的速度是比较快的,所以就需要用高位端口来进行访问。 大概技术路径是这样的: []( https://imgse.com/i/piPcFBV) |