起因:最近看了好多因 WEB 服务封家宽的帖子,虽然没有在上海深圳,但鉴于 LZ 目前所处地区开公网要向省级公司走流程,并且师傅说明了 开了公网就是要被监控的,且最近刚入了 PT 坑流量有些大,还是很担心的。
1.为什么有 VPS 还用 FRP 架在本地:——数据还是放在自己这里放心
2.速度怎么样:——虽然不如直连的好,但总体控制在 160ms 以下;需要走 IPV4 HTTP 上下传的时候再打开映射即可; IPV4 非 HTTP 端口映射仍然保留不受影响(如 PT、Teamspeak3 Server );且 IPV6 映射没有删除,可选移动、电信 IPV6 出口。
3.优点:——去掉了域名+端口这个累赘
4.缺点——看不到访客 IP,凑合用吧,谁有方法可以贴出来。
本地通过 NGINX 反代统一为一个端口(如 8889 ),用 FRPC TCP 映射出去(如本地 8889 远程 8889 );
再到远程 VPS NGINX 新建一个 VHOST 把所有的域名都输入进去,该 VHOST 反代本 VPS 上的 FRPS 非 80 端口的 TCP 端口(如 127.0.0.1:8889 )。
通过域名访问相应 web 服务,这样以后如果再增加服务的话,只需要在两端的 NGINX 增加绑定相应域名即可。
暂时没有考虑 HTTPS,第一个不会,第二个还用不到。
网络结构图

参考 NGINX 配置
server
{
    listen 80;
    listen [::]:80;
    server_name 域名 1  域名 2 域名 3 域名 4 域名 5 域名 6;
       location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:VHOST 端口 /;
    }
	access_log off;
}
|  |      1111111111111      2019-11-29 20:52:44 +08:00 via Android Vps 的 nginx 获取访客 ip,并写入请求头 本地的 Ngin 别修改这个请求头,后端服务就获得访客 IP 了 | 
|      2e8AsCM      2019-11-29 20:54:05 +08:00 via Android 这样挺安全,不过如果有复制文件等大带宽需求的话,VPS 那边的费用就有点高了。目前我是开了两三个 SSH 端口用于管理,和一个代理端口用于连回家里内网,没有开跑着网页的端口,不知道安不安全…… | 
|  |      3samondlee OP @111111111111 emmm 就是本地的 nginx 把这行去掉吗 proxy_set_header X-Real-IP $remote_addr; @e8AsCM 嗯 非 HTTP 的 TCP 映射都留着比如 SSH\RDP | 
|      4laoyur      2019-11-29 21:42:54 +08:00 方案二: 主动要求改成内网 IP,然后在外面通过 zerotier 访问内网。 | 
|  |      6zlkent PRO  2 一个 VPN 回来就完事了,何必整这么麻烦? | 
|      7txydhr      2019-11-29 23:08:46 +08:00 海外 vps 有访问速度问题,国内 vps 有流量费用问题。目前流量大的话(比如要备份照片视频这种),除了 web 直连,只能用 vpn。现在群晖全套 app 都是基于 web,除非群晖针对国内情况整个换协议。 | 
|  |      9zhucegeqiu      2019-11-30 06:52:14 +08:00 via iPhone 国内云服务器要么带宽小,要么流量贵 我家 30M 上传带宽,基本不可能用 frp 达到同样的体验 | 
|  |      11stille      2019-11-30 10:08:06 +08:00 via iPhone 之前测试过阿里云 30m 穿透家里 200 下 30 上,群晖差不多能跑满,就是流量太贵用不起,后来换了腾讯云 5m 的 vps,穿透 web 端够用了,大文件传输临时开 webdav 端口,现在还没太好的方案用 drive 和 moments 同步文件和照片 | 
|      12WEBUG      2019-11-30 11:19:35 +08:00 via Android 想问下,家里开酸酸乳之类的,frp 去连接,在国外用来回国,会被封吗,通过 frp 连接的东西能看出链接协议吗 | 
|  |      13terax      2019-11-30 11:48:17 +08:00 via iPhone https 的话可以用 lets encrypt,只需要在 vps 的 nginx 配一下就好了,用 certbot 很方便的 | 
|      14NSAgold      2019-11-30 12:43:55 +08:00 via Android 160ms 的话为啥不选择上 CF 嘞 设置仅允许 CF 回源,其他 IP 访问 http 端口直接丢弃 | 
|  |      15cctv6      2019-11-30 13:47:22 +08:00 就没有用 ssh 隧道的嘛 | 
|      16lalalakakaka      2019-11-30 14:34:05 +08:00 学习了~话说这个示意图画的挺不错的。请教下是用什么软件画的呢? | 
|  |      18SuzutsukiKaede      2019-11-30 18:37:25 +08:00 我也用的这个方案,握手。 | 
|  |      20samondlee OP @WEBUG FRPC 本地并没有开 tcp 端口,所以不影响 @terax 带来带去的头晕了 233 @NSAgold CF 针对国内 IP 源端口只允许 443 80,国内家宽默认是封了的 @lalalakakaka 亿图图示 @SuzutsukiKaede 哈哈你这个 ID 有点儿像之前玩战地 1 碰到的人 | 
|      21millionart      2019-12-01 05:51:51 +08:00 via iPhone 路由绑定域名给 nas 内网地址,直连 80 433 端口,反代其他端口给 frp | 
|      22NSAgold      2019-12-01 09:37:56 +08:00 via Android @samondlee  HTTP/HTTPS traffic within China data centers for domains that have the China Network enabled 这句话应该理解为中国的数据中心只开放了 80/443 端口吧? 英语不是很好只能大致看懂意思 TAT | 
|      25mxT52CRuqR6o5      2019-12-02 10:22:34 +08:00 via Android @samondlee cf 国内源可以用其他端口的,亲测 | 
|      26wmphone      2019-12-03 20:39:44 +08:00 via iPhone 套路云双程 CN2 他不香 | 
|  |      28samondlee OP | 
|      29mxT52CRuqR6o5      2019-12-18 17:51:21 +08:00 via Android @samondlee 我都说了亲测,上海电信的家宽 |