简单滴陪伴建立在内网中,迫切想外网能访问,寻找了很多内网穿透工具,都没有好的效果。其实很早以前有个工具-小强域名解析,可惜停止服务了,超级简单好用。
正好手上有个vps,面板docker中发现了FRP,尝试使用了一下,原来也是很容易的。当然,在使用过程中也出现了好多的问题,虽然能正常访问网页,但是有些功能却不能使用。幸好有trae帮忙。现记录之……
关键点一:FRP需要同时转发三种类型的连接
连接类型 端口 用途
HTTP 80 → 40800 网页访问
TCP 2000 → 2000 语音控制连接
UDP 12000 → 12000 语音数据传输
关键点二:Nginx反向代理必须正确传递Host头
错误配置:proxy_set_header Host 127.0.0.1; # ❌ FRP找不到路由
正确配置:proxy_set_header Host $host; # ✅ 传递原始域名
关键点三:FRP服务端正确配置
bindAddr = “0.0.0.0”
bindPort = 7000
vhostHTTPPort = 40800
vhostHTTPSPort = 40443
auth.method = “token”
auth.token = “**” //自己设置
webServer.addr = “0.0.0.0”
webServer.port = 7500
webServer.user = “**” //后台用户名
webServer.password = “**” //后台密码
关键点四:FRP客户端正确配置
[common]
server_addr = 服务器IP
server_port = 7000
token = 密钥
[chat_web]
type = http
custom_domains = 域名
local_port = 80
[chat_voice_tcp]
type = tcp
local_ip = 内网ip
local_port = 2000
remote_port = 2000
[chat_voice_udp]
type = udp
local_ip = 内网ip
local_port = 12000
remote_port = 12000
关键点五:Nginx反向代理配置
location ^~ /
{
proxy_pass http://127.0.0.1:40800;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
}
## 排查过程中的教训
1. 不要只关注HTTP :实时通信功能往往需要额外的TCP/UDP端口
2. Host头很重要 :虚拟主机路由依赖于正确的Host头
3. 逐个排查 :先验证FRP服务端,再验证客户端,最后验证Nginx
4. 查看日志 :日志能告诉我们真实的问题所在








暂无评论内容