frp可以为没有公网地址(ipv4或ipv6)的主机提供外网访问的能力。本文记录了为web服务添加https支持的方法。
ssl证书申请
可通过lucky万吉-SSL/TLS证书模块为域名申请Let’s Encrypt证书,完成后下载证书并解压,得到.crt,.key(还有.pem和_issuerCertificate.crt,这里用不上)。
服务端frps.toml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| bindPort = 7000
auth.method = "token" auth.token = "yourtoken"
vhostHTTPSPort = 443
webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "admin" webServer.tls.certFile = "/root/ssl/_.qs100371.vip.crt" webServer.tls.keyFile = "/root/ssl/_.qs100371.vip.key"
log.to = "./frps.log"
|
ssl证书文件放在公网主机/root/ssl目录下。
客户端frpc.toml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| serverAddr = "公网主机ip" serverPort = 7000 auth.method = "token" auth.token = "yourtoken" webServer.addr = "0.0.0.0" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin"
[[proxies]] name = "fnos" type = "https" customDomains = ["media.qs100371.vip"] [proxies.plugin] type = "https2http" localAddr = "127.0.0.1:5666" crtPath = "/root/ssl/_.qs100371.vip.crt" keyPath = "/root/ssl/_.qs100371.vip.key" hostHeaderRewrite = "127.0.0.1" requestHeaders.set.x-from-where = "frp" [[proxies]] name = "fnos1" type = "tcp" localIP = "192.168.0.4" localPort = 5666 remotePort = 5666
|
ssl证书文件放在内网主机/root/ssl目录下。
域名解析设置
把设置https访问的域名(本文中media.qs100371.vip)的A记录指向公网主机ip。
https访问
重启服务端frps和客户端frpc服务后就可在浏览器上用https://media.qs100371.vip访问内网的飞牛服务器。
服务端面板通过https://f.qs100371.vip:7500访问。


客户端面板通过http://192.168.0.4:7400访问。

最近申请了腾讯云一个月2C2G带宽3M主机试用,配置了一个frps服务器,能够正常使用内网穿透,只有在穿透视频播放有时会有点卡,毕竟最大带宽只有3Mbps(375kb/s)。相对STUN内网穿透能用满最大上传带宽(一般家用宽带上传10M-50M或更高),frp严重受制于公网主机的带宽(低价主机一般带宽1M-5M)。

详细设置过程需配合frp内网穿透的使用方法使用。