frp 是什么?
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
为什么选择 frp?
通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
- 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
- TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
- 代理组间的负载均衡。
- 端口复用:多个服务可以通过同一个服务端端口暴露。
- P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
- 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
- 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
- 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
frps公网配置
- 下载
2. 安装
- 将下载包上传公网服务器
- 在opt文件夹进行解压
tar -zvxf [ftp.tar,gz]
4. frps.toml 配置
bindPort = 3308 # 服务端监听端口,默认值为 7000。
vhostHTTPPort = 8888 # HTTP 类型代理监听的端口,启用后才能支持 HTTP 类型的代理。
[auth]
token = "frptoken" # 在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。
[log]
to = "./frps.log"
level = "info"
- 启动
./frps -c frps.toml
frpc内网配置
- 下载
2. 安装
- 将下载包上传公网服务器
- 在opt文件夹进行解压
tar -zvxf [ftp.tar,gz]
4. 配置
serverAddr = "xxx.xxx.xx.xx" # 连接服务端的地址。
serverPort = 3308 # 连接服务端的端口,默认为 7000。
[auth]
token = "frptoken" # 在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。
[log]
to = "./frpc.log"
level = "info"
# 控制台
[webServer]
addr = "127.0.0.1"
port = 7400
user = "admin"
password = "123456"
[[proxies]]
name = "yd-web"
type = "http"
localPort = 8000
customDomains = ["xx.xx.com"] # 填写域名
- 启动
./frpc -c frpc.toml
nginx配置
使用nginx对域名做代理,需要进行配置。这里默认对nginx有了解
配置
# server相当于虚拟站点
server {
listen 80;
server_name xxx; # 代理的域名
# 动态服务
location / {
proxy_pass http://127.0.0.1:8888; # 这里的端口要与frps中的vhostHTTPPort设置的端口一致
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}