FRP 内网穿透部署完整教程
架构说明
- 香港机器:frps(服务端) + Nginx;对外端口:7000(frp控制)、80(web)
- 国内机器:frpc(客户端),业务仅监听127.0.0.1,无公网入站端口
- 域名走Cloudflare橙色代理,使用Flexible模式实现HTTPS,香港机器不部署证书
- 链路:浏览器 → Cloudflare → 香港Nginx(80) → 127.0.0.1:10080(frps vhost) → frp隧道 →国内frpc →本地业务服务
1. 香港服务端 frps.toml
bindPort = 7000
auth.method = "token"
auth.token = "你的高强度token字符串"
vhostHTTPPort = 10080
# vhost仅本机Nginx访问,不要监听0.0.0.0
# Dashboard监控面板,默认仅本机访问,不要直接暴露公网
webServer.addr = "127.0.0.1"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "你的面板密码"
[transport]
# maxPoolCount保持默认,web业务无需修改
maxPoolCount = 5
# transport.tls.certFile 是frpc-frps隧道加密证书,**不是网站HTTPS证书**,网站ssl交给Nginx/CF处理frps系统服务
# 配置systemd,启动开机自启
systemctl enable frps
systemctl start frps
systemctl restart frps
# 查看日志
journalctl -u frps -f香港服务器安全组&防火墙
| 端口 | 监听地址 | 公网放行 | 说明 |
|---|---|---|---|
| 7000 | 0.0.0.0 | ✅放行 | frpc客户端连接端口;有条件设置国内服务器IP白名单 |
| 80 | 0.0.0.0 | ✅放行 | CF回源Nginx |
| 10080 | 127.0.0.1 | ❌关闭 | 仅本机Nginx调用,禁止公网开放 |
| 7500 | 127.0.0.1 | ❌关闭 | frp监控面板,仅临时调试打开 |
# firewalld放行
firewall-cmd --add-port=7000/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload2. 国内客户端 frpc.toml
serverAddr = "43.129.216.234"
serverPort = 7000
auth.method = "token"
auth.token = "你的高强度token字符串"
log.level = "info"
log.to = "console"
# http代理,多域名依靠customDomains区分,type=http禁止写remotePort
[[proxies]]
name = "tools-xxoo-team"
type = "http"
localPort = 20001
customDomains = ["newapi.xxoo.team"]
[[proxies]]
name = "www-sapi-run"
type = "http"
localPort = 20002
customDomains = ["sapi.xxoo.team"]frpc系统服务
systemctl enable frpc
systemctl start frpc
systemctl restart frpc
journalctl -u frpc -f
# 查看代理启动成功
journalctl -u frpc -l | grep "start proxy success"国内业务程序务必监听 127.0.0.1:20001/20002,不要监听0.0.0.0,不对外暴露业务端口。3. 香港 Nginx 配置(CF‑Flexible模式)
Flexible模式:CF对外HTTPS,回源HTTP 80;禁止写80强制301跳转https,否则重定向死循环
/etc/nginx/conf.d/newapi.conf
server {
listen 80;
server_name newapi.xxoo.team sapi.xxoo.team;
location / {
proxy_pass http://127.0.0.1:10080;
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 http;
}
}校验重载:
nginx -t
systemctl reload nginx4. Cloudflare配置
- DNS A记录:
newapi.xxoo.team、sapi.xxoo.team指向香港IP,橙色云朵开启代理 - SSL/TLS →加密模式:
Flexible(灵活) - 开启:始终使用HTTPS、Automatic HTTPS Rewrites自动HTTPS重写
5. 新增子域名网站步骤
- CF新增A记录,橙色代理;
- frpc.toml新增一段
[[proxies]],填写customDomains = ["xxx.xxoo.team"]; systemctl restart frpc;
Nginx配置无需改动。
6. frp Dashboard监控面板
- 默认仅本机
127.0.0.1:7500,禁止长期暴露公网 - 仅支持只读监控:查看在线客户端、代理、流量统计;不能网页修改隧道配置
- 调试临时开放:修改
webServer.addr="0.0.0.0",安全组放行7500;调试完成立刻切回127.0.0.1并关闭端口。
7. 架构链路完整流程
浏览器(HTTPS)
↓
Cloudflare CDN节点(隐藏香港真实源站IP)
↓ HTTP 80
香港Nginx
↓ 本机回环127.0.0.1:10080
香港frps
↓ frp加密长连接隧道(国内frpc主动出站连接7000)
国内frpc
↓ 本机回环
国内业务 20001 / 20002
8. 安全注意点
- 7000端口无法走CF,会泄露香港服务器IP;防护:强token,尽量配置来源IP白名单。
- 10080端口仅本机访问,云安全组务必关闭入站放行。
- frpc业务localPort监听127.0.0.1,不要监听0.0.0.0。
- dashboard 7500不要长期对公网开放。
- token不要泄露,配置文件做好权限保护。