当前位置: 首页 > news >正文

使用 Frp 同时实现 HTTP 和 HTTPS 内网穿透

在日常开发中,我们常常会遇到这种需求:希望让外部(公网)访问本地正在运行的 HTTP 或 HTTPS 服务。但由于内网环境(如局域网、NAT、防火墙等)限制,外部无法直接访问本地服务。

这时候,“内网穿透”就派上用场了。而在众多方案中,开源的 Frp 是开发者最常用的一款轻量、安全、可自定义的内网穿透工具。

本篇文章将介绍如何通过 Frp 同时支持 HTTP 和 HTTPS 的内网穿透,让你实现本地服务在公网用域名访问的能力。


✅ 一、什么是 Frp?

Frp 是一个专为内网穿透设计的高性能反向代理应用。它分为:

  • frps:部署在公网服务器上的服务端
  • frpc:部署在内网客户端上的客户端程序

它支持 HTTP、HTTPS、TCP、UDP 等多种协议,非常适合开发调试、本地 AI 服务开放、微信小程序联调等场景。


✅ 二、实现目标

我们要实现如下目标:

  • 本地服务监听在 http://localhost:80https://localhost:443
  • 公网访问使用统一域名 http://your-domain.comhttps://your-domain.com
  • Frp 自动将请求穿透转发到本地服务

✅ 三、服务端配置:frps.ini

在你部署的公网服务器上(例如阿里云、腾讯云、轻量应用服务器等),使用如下配置启动 frps

[common]
bind_port = 7000                   # 客户端连接端口
dashboard_port = 7500             # 控制台(可选)
dashboard_user = admin
dashboard_pwd = adminvhost_http_port = 80              # 开启 HTTP 虚拟主机
vhost_https_port = 443            # 开启 HTTPS 虚拟主机

⚠️ 注意:

  • 确保端口 700080443 在云服务器安全组中已放行
  • 确保 80、443 没被 nginx 或 Apache 占用

启动方式:

./frps -c ./frps.ini

✅ 四、客户端配置:frpc.ini

在你本地开发机(或任何内网机器)运行如下配置的 frpc.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

启动:

./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 服务,可以:

  1. 不配置 frpc.ini 中的 [web-https]
  2. 在公网服务器上使用 Nginx + Certbot,将 HTTPS 流量终结后再转发给 frps

这样你就能实现全站 HTTPS,证书自动续期,安全性更高。


✅ 八、总结

功能是否支持说明
同时支持 HTTP 和 HTTPSvhost_http_port + vhost_https_port
同一域名同时转发使用 custom_domains 指定同一个域名
本地无 HTTPS 也能启用公网 HTTPS可通过 Nginx 中转或 SSL 终结

🔚 写在最后

Frp 是一款强大且易用的内网穿透工具,通过合理配置可以轻松支持多个域名、多个协议。如果你经常需要让本地服务暴露给公网,Frp 是首选之一。

如果你需要 完整部署脚本、开机启动、Nginx 反代配置、SSL 自动签发方案,欢迎留言,我会在下一篇中详细展开!


🧰 项目地址:https://github.com/fatedier/frp
🧪 推荐使用版本:v0.52.3 以上,支持更全的功能
📩 欢迎交流:可评论区留言你的场景,我来帮你设计最佳方案!

http://www.xdnf.cn/news/130519.html

相关文章:

  • SQLMesh 表格对比指南:深入理解 table_diff 工具的实际应用
  • c++进阶——类与继承
  • 命令行指引的尝试
  • 【Linux学习笔记】进程的fork创建 exit终止 wait等待
  • 如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践
  • Java面试高频问题(26-28)
  • 使用浏览器的Clipboard API实现前端复制copy功能
  • 基准指数选股策略思路
  • 风光储能+智能调度,这才是企业未来能源管理的最优解
  • Linux进程学习【基本认知】
  • vscode切换Python环境
  • C++中的浅拷贝和深拷贝
  • 【现代深度学习技术】循环神经网络06:循环神经网络的简洁实现
  • 头歌实训之索引
  • MySQL 库的操作 -- 增删改查,备份和恢复,系统编码
  • 深度解析之算法之分治(快排)
  • Python-36:饭馆菜品选择问题
  • 使用jsrsasign进行RSA加密解密
  • Vue 2 和 Vue 3 的详细对比,从 生命周期、API、响应式系统、函数调用 等多角度展开,最后附表格总结
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第三模块·面向对象深度进化 —— 第十二章 接口:比C函数指针更强大的契约
  • 数学基础 -- 欧拉公式的推导过程学习
  • 精准落地设计,现代项目管理中的深度实践
  • FeignClient用法笔记
  • 构建企业官方网站有哪些必备因素?
  • YOLOv8融合CPA-Enhancer【提高恶略天气的退化图像检测】
  • ecovadis认证需要提供哪些文件?ecovadis认证优势是什么?
  • c语言 write函数
  • Java线程池那点事(面试高频)
  • ASR VAD TTS
  • VLA 论文精读(十八)π0.5: a Vision-Language-Action Model with Open-World Generalization