HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 vhost_http_port 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。

HTTPS 与此类似,但是需要注意,frp 的 https 代理需要本地服务是 HTTPS 服务,frps 端不会做 TLS 终止。也可以结合 https2http 插件来实现将本地的 HTTP 服务以 HTTPS 协议暴露出去。

修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:

[common]
bind_port = 7000
vhost_http_port = 8080

https 代理的话需要配置 vhost_https_port

修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains

[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.wxx86.cn

[web2]
type = http
local_port = 8080
custom_domains = www.wxx862.cn

分别启动 frps 和 frpc。

将 www.wxx86.cn 和 www.wxx862.cn 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。

通过浏览器访问 http://www.wxx86.cn:8080 即可访问到处于内网机器上 80 端口的服务,访问 http://www.wxx862.cn:8080 则访问到内网机器上 8080 端口的服务。