96SEO 2026-04-26 16:52 21
你是否经历过这样的时刻:在公司写了个hen棒的后端服务,想回家继续调试,却发现公司内网没有公网IP;或者你在家里跑了一个基于本地知识库的AI大模型,迫不及待想给远在千里之外的朋友展示一下结果被家里的路由器NAT挡得严严实实?这时候,Ru果有一把钥匙Neng轻松穿透厚厚的网络壁垒,那该多好。别急,frp就是这把钥匙。

说实话,被“内网”困住的感觉真的hen糟糕。frp作为一个开源的高性Neng反向代理应用,它就像是一个不知疲倦的数字搬运工,专门负责把你在内网的服务,安全、稳定地“搬运”到公网上去。今天我们就来彻底扒一扒这个工具的底裤,kankan它到底是怎么工作的,以及我们该如何驾驭它。
透过现象kan本质:frp的运行逻辑hen多人一听到“内网穿透”就觉得高深莫测,其实frp的原理简单得令人发指。你完全Ke以把它想象成在两座孤岛之间架设的一座专属桥梁。
通常情况下你的内网机器Ke以主动访问互联网,但外面的设备想直接访问你却是Zuo不到的,因为门口守着一个叫“NAT”的保安。frp的精妙之处就在于它利用了“主动向外发起连接”这个特权。
整个流程分为两个角色:
frps这是一台拥有公网IP的VPS服务器,它就像是一个在广场上举着牌子的接应人,时刻等待连接。
frpc这是运行在你内网机器上的程序,它会主动跑去寻找那个接应人,并大喊一声:“嘿,我在这儿,帮我kan着点门口!”
一旦这条由内向外发起的连接建立成功,一条稳定的隧道就诞生了。之后外部用户访问公网服务器的某个端口,流量就会顺着这条隧道,精准地转发到你内网的服务上。这就是为什么frpNeng穿透内网的核心秘密——它不走寻常路,它自己修路。
动手实战:从零开始搭建你的隧道光说不练假把式。我们要让frp跑起来其实只需要准备两样东西:一台公网服务器和一台需要被穿透的内网机器。
第一步:服务端的准备我们需要在公网服务器上部署frps。假设你手里Yi经有一台Linux服务器了先去GitHub把Zui新的压缩包拽下来。别担心,这玩意儿非常轻量,解压后也就几十兆。
配置文件是frp的灵魂,服务端的配置其实非常简洁。我们需要指定一个监听端口,这是frp通信的“大门”,还得设个密码,不然谁douNeng连上来把你的服务器当公共代理用,那可就太糟心了。
# frps.toml
bindPort = 7000 # 这是frp通信的专用端口,必须开放
auth.method = "token" # 开启认证
auth.token = "your-super-secret-password" # 换成一个复杂的密码,别偷懒
配置好后直接运行./frps -c frps.toml,服务端就算开工了。这时候,你的服务器正在7000端口上静静地监听,等待着来自内网的呼唤。
接下来转战你的内网机器。这里以Mac为例,Windows其实也大同小异。你需要下载对应的frpc客户端,并创建一个frpc.toml文件。
假设你想把内网机器上运行的一个Web服务暴露出去,你Ke以这样写:
# frpc.toml
serverAddr = "x.x.x.x" # 填你公网服务器的IP
serverPort = 7000 # 对应服务端的bindPort
auth.method = "token"
auth.token = "your-super-secret-password" # 密码必须和服务端一致
]
name = "my-web-service" # 给这个代理起个好听的名字
type = "tcp" # 协议类型
localIP = "127.0.0.1" # 本地服务的IP
localPort = 8080 # 本地服务的端口
remotePort = 6000 # 映射到公网服务器的端口
保存之后执行frpc -c frpc.toml。Ru果一切顺利,你会kan到屏幕上刷出一连串“start proxy success”的字样。这时候,神奇的事情发生了:任何人访问http://x.x.x.x:6000,实际上dou在访问你本地的http://127.0.0.1:8080。
虽然TCP转发Neng解决大部分问题,但Ru果你有多个Web服务,总不Neng给每个服务dou配一个端口吧?那样太不优雅了而且记起来也头疼。这时候,HTTP类型的代理就派上用场了。
frp支持通过域名来区分不同的服务,这样你就Ke以只用服务器的一个80端口,就Neng跑满一整排内网服务。这就好比是一个大门口的保安,根据来访者的名片指引他们去不同的房间。
你需要先在服务端开启HTTP监听:
# frps.toml 增加配置
vhostHTTPPort = 80
然后客户端配置稍微变个样:
]
name = "ai-chat"
type = "http"
localPort = 8080
customDomains = # 你的域名A记录指向服务器
]
name = "personal-blog"
type = "http"
localPort = 3000
customDomains =
只要把ai.yourdomain.com和blog.yourdomain.com的DNS解析dou指向你的公网服务器IP,frps就会聪明地把流量分发给对应的内网服务。这种感觉,就像是你自己拥有了一个微型的云服务商。
Ru果你只是用命令行./frpc启动,一旦终端关闭或者网络抖动,服务就挂了。这显然不是我们想要的结果。我们必须让它在后台默默守护,甚至崩溃后自动拉起。
在Linux服务器上,没有什么比systemdgeng靠谱了。写一个简单的service文件,就Neng让frps随系统启动,并且无限重启。
sudo tee /etc/systemd/system/frps.service < 'EOF'
Description=frp server daemon
After=network.target
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=always
RestartSec=5s
WantedBy=multi-user.target
EOF
sudo systemctl enable --now frps
Mac上的Launchd技巧
在Mac上,我们习惯用launchd来管理用户级的守护进程。虽然写plist文件有点繁琐,但一劳永逸。
cat> ~/Library/LaunchAgents/com.frpc.plist < 'EOF'
Label
com.frpc
ProgramArguments
/opt/homebrew/bin/frpc
-c
/Users/你的用户名/frp/frpc.toml
KeepAlive
RunAtLoad
EOF
launchctl load ~/Library/LaunchAgents/com.frpc.plist
这样配置完,就算你重启电脑,frpc也会在后台自动连接,完全不用你操心。
容器化部署:Docker玩家的福音现在hen多朋友dou习惯用Docker或者OrbStack来管理本地服务。Ru果你想把frpc也塞进容器里也是完全没问题的。不过这里有个坑得提醒你一下。
在Docker容器里127.0.0.1指的是容器自己,而不是你的宿主机。Ru果你想让容器里的frpc访问宿主机上的服务,localIP千万不Neng写127.0.0.1。在Mac和Windows的Docker Desktop中,Ke以使用一个特殊的DNS名host.docker.internal。
写个docker-compose.yml
services:
frpc:
image: snowdreamtech/frpc:latest
container_name: my_frpc
volumes:
- ./frpc.toml:/etc/frp/frpc.toml
restart: unless-stopped
然后在frpc.toml里把localIP改成host.docker.internal,这样流量就Neng正确地从容器“跳”回宿主机了。
把内网服务暴露到公网,就像是你把家里的门打开了一条缝。虽然方便了朋友进出,但也可Neng招来不速之客。所以安全配置必须Zuo到滴水不漏。
认证是必须的。前面提到的auth.token就是第一道防线,千万别用默认的“123456”这种弱密码,Zui好是一串乱码。防火墙要管好。服务器上只开放frp通信端口和你真正需要对外提供服务的端口,其他的一律关掉。比如Ru果你不需要SSH穿透,就别把22端口暴露在公网上。
再者,敏感服务别乱穿。数据库这种东西,原则上不建议直接穿透到公网。Ru果非得这么Zuo,务必配合IP白名单使用。还有,尽量别让用户直接通过IP:端口访问服务,既不美观也不安全。Zui佳实践是在服务器上再套一层Nginx,配置好HTTPS证书,让用户通过域名访问,这样既专业又安全。
整个链路大概是这样的:
用户 → Nginx → frps → frpc → 本地服务
这样,Nginx负责处理SSL加密和静态资源,frp只负责安安静静地转发数据,各司其职,稳得一批。
常见问题与排查思路哪怕配置得再完美,有时候也难免会遇到点小插曲。比如明明配置dou对了访问就是超时。这时候别慌,先喝口水冷静一下。
通常问题出在本地服务没跑起来或者localPort填错了。你Ke以先在内网机器上curl 127.0.0.1:端口试试。Ru果frpc是在Docker里跑的,记得检查是不是用了host.docker.internal。Ru果速度慢,那多半是服务器带宽不够,或者中间链路丢包严重,frp本身只是转发,背不动这锅。
总而言之,frp虽然只是一个简单的工具,但它赋予了我们打破网络边界的Neng力。无论是远程办公、个人博客托管,还是AI模型的临时演示,它douNeng游刃有余地完成任务。当然技术是把双刃剑,在享受便利的同时千万别忘了给这道门上一把牢固的锁。希望这篇文章Neng帮你彻底搞懂frp是什么以及如何用好它。现在去试试吧,让你的内网服务不再孤单!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback