简单一言
FRP内网穿透记录

FRP内网穿透记录

 

简单滴陪伴建立在内网中,迫切想外网能访问,寻找了很多内网穿透工具,都没有好的效果。其实很早以前有个工具-小强域名解析,可惜停止服务了,超级简单好用。

正好手上有个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. 查看日志 :日志能告诉我们真实的问题所在

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容