FRP WebSocket 穿透内网实战:从原理到生产环境部署
·
背景与痛点
在开发实时应用(如在线聊天、实时监控)时,WebSocket 是常见协议。但本地开发环境通常位于 NAT 或防火墙后,外部无法直接访问。传统方案需要公网服务器或复杂网络配置,而 FRP(Fast Reverse Proxy)通过轻量级反向代理解决这一问题。

技术选型:FRP vs 其他方案
- FRP 优势:
- 开源免费,配置灵活
- 支持 TCP/UDP/HTTP/WebSocket 多种协议
- 流量可加密(TLS)
-
资源占用低
-
对比 ngrok:
- ngrok 提供即用型服务但免费版限制多
- FRP 需自建服务器但可控性更强
核心实现步骤
- 准备公网服务器
- 安装 FRP 服务端(frps)
-
开放所需端口(默认 7000)
-
配置服务端(frps.ini)
[common] bind_port = 7000 # 服务端监听端口 token = your_secure_token # 认证密钥 -
配置客户端(frpc.ini)
[common] server_addr = your_server_ip server_port = 7000 token = your_secure_token [websocket_app] type = ws local_port = 8080 # 本地WebSocket服务端口 custom_domain = ws.yourdomain.com # 绑定域名

性能优化技巧
- 心跳检测:增加
heartbeat_timeout防止连接断开 - 多路复用:启用
pool_count提升并发能力 - 压缩传输:设置
use_compression = true减少带宽
避坑指南
- 连接超时:检查防火墙是否放行端口
- 证书错误:WebSocket over TLS 需正确配置证书路径
- 域名解析:确保 DNS 已指向 FRP 服务器 IP
安全建议
- 强制使用 TLS 加密
[common] tls_enable = true - IP 白名单限制
allow_ports = 7000,8080
实践建议
动手尝试时,建议先用测试环境验证基础功能,再逐步添加安全配置。对于生产环境,可结合 Nginx 做负载均衡,并通过日志监控连接状态。
更多推荐


所有评论(0)