在日常开发中,我们常常会遇到这种需求:希望让外部(公网)访问本地正在运行的 HTTP 或 HTTPS 服务。但由于内网环境(如局域网、NAT、防火墙等)限制,外部无法直接访问本地服务。
这时候,"内网穿透 "就派上用场了。而在众多方案中,开源的 Frp 是开发者最常用的一款轻量、安全、可自定义的内网穿透工具。
本篇文章将介绍如何通过 Frp 同时支持 HTTP 和 HTTPS 的内网穿透,让你实现本地服务在公网用域名访问的能力。
✅ 一、什么是 Frp?
Frp 是一个专为内网穿透设计的高性能反向代理应用。它分为:
frps
:部署在公网服务器上的服务端frpc
:部署在内网客户端上的客户端程序
它支持 HTTP、HTTPS、TCP、UDP 等多种协议,非常适合开发调试、本地 AI 服务开放、微信小程序联调等场景。
✅ 二、实现目标
我们要实现如下目标:
- 本地服务监听在
http://localhost:80
或https://localhost:443
- 公网访问使用统一域名
http://your-domain.com
和https://your-domain.com
- Frp 自动将请求穿透转发到本地服务
✅ 三、服务端配置:frps.ini
在你部署的公网服务器上(例如阿里云、腾讯云、轻量应用服务器等),使用如下配置启动 frps
:
ini
[common]
bind_port = 7000 # 客户端连接端口
dashboard_port = 7500 # 控制台(可选)
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 80 # 开启 HTTP 虚拟主机
vhost_https_port = 443 # 开启 HTTPS 虚拟主机
⚠️ 注意:
- 确保端口
7000
、80
、443
在云服务器安全组中已放行- 确保 80、443 没被 nginx 或 Apache 占用
启动方式:
bash
./frps -c ./frps.ini
✅ 四、客户端配置:frpc.ini
在你本地开发机(或任何内网机器)运行如下配置的 frpc.ini
:
ini
[common]
server_addr = x.x.x.x # 替换为你的公网服务器 IP
server_port = 7000
[web-http]
type = http
local_port = 80
custom_domains = your-domain.com
[web-https]
#type = https
#local_port = 443
#custom_domains = your-domain.com
启动:
bash
./frpc -c ./frpc.ini
如果报错,删掉 "# 替换为你的公网服务器 IP" 注解。
✅ 五、DNS 设置
你需要将域名 your-domain.com
的 A 记录解析到你的公网服务器 IP,例如:
记录类型 | 主机记录 | IP |
---|---|---|
A | @ | x.x.x.x |
设置完成后,稍等几分钟解析生效。
✅ 六、访问效果
完成上述配置后:
- 你可以通过浏览器访问
http://your-domain.com
进入本地 HTTP 服务 - 如果本地也提供 HTTPS 服务,则可以通过
https://your-domain.com
访问
这对调试小程序、Web 前端、本地 AI 服务等极其方便。
✅ 七、可选优化:公网自动签发 HTTPS(Nginx + SSL)
如果你本地只部署了 HTTP 服务,可以:
- 不配置
frpc.ini
中的[web-https]
- 在公网服务器上使用 Nginx + Certbot ,将 HTTPS 流量终结后再转发给
frps
这样你就能实现全站 HTTPS,证书自动续期,安全性更高。
✅ 八、总结
功能 | 是否支持 | 说明 |
---|---|---|
同时支持 HTTP 和 HTTPS | ✅ | vhost_http_port + vhost_https_port |
同一域名同时转发 | ✅ | 使用 custom_domains 指定同一个域名 |
本地无 HTTPS 也能启用公网 HTTPS | ✅ | 可通过 Nginx 中转或 SSL 终结 |
🔚 写在最后
Frp 是一款强大且易用的内网穿透工具,通过合理配置可以轻松支持多个域名、多个协议。如果你经常需要让本地服务暴露给公网,Frp 是首选之一。
如果你需要 完整部署脚本、开机启动、Nginx 反代配置、SSL 自动签发方案,欢迎留言,我会在下一篇中详细展开!
🧰 项目地址 :https://github.com/fatedier/frp
🧪 推荐使用版本 :v0.52.3 以上,支持更全的功能
📩 欢迎交流:可评论区留言你的场景,我来帮你设计最佳方案!