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

不止于远程桌面:用frp在Windows上轻松暴露本地Web服务(如IIS/Node.js)到公网

不止于远程桌面:用frp在Windows上轻松暴露本地Web服务到公网

作为一名全栈开发者,我经常遇到这样的困境:本地调试的Web服务只能在localhost访问,而移动端真机测试、跨团队协作演示时,不得不反复打包部署到测试服务器。直到发现frp这个神器——它不仅能实现内网穿透,更能将本地开发环境瞬间变成临时公网服务。本文将手把手教你用frp暴露Windows上的IIS、Node.js等服务,并分享我踩坑总结的二级域名配置技巧安全防护方案

1. 为什么选择frp而非ngrok?

市面上内网穿透工具众多,但frp在开发者群体中逐渐成为首选,原因在于:

  • 完全开源可控:frp的GitHub仓库保持活跃更新,没有商业产品的突然收费风险
  • 协议支持全面:除基础的TCP/UDP外,特别优化了HTTP/HTTPS代理,适合Web开发场景
  • 带宽无限制:自建服务器意味着不受第三方服务的流量制约
  • 成本极低:最基础的1核1G云服务器即可流畅运行

与ngrok的对比(实测数据):

特性frp自建ngrok免费版
最大连接时长无限制2小时自动断开
自定义域名支持随机分配
传输加密可配置TLS强制TLS
本地端口修改无需重启服务需重新启动隧道
访问日志完整记录仅错误日志

提示:如果只是临时演示,ngrok确实更快捷;但需要长期稳定的测试环境,frp是更专业的选择。

2. 十分钟快速搭建frp服务端

2.1 服务器选购建议

虽然任何有公网IP的服务器都能运行frp,但根据我的实测经验推荐:

  • 国内用户:腾讯云轻量应用服务器(上海/广州区域),月付约24元
  • 国际访问:DigitalOcean的Singapore节点,5美元/月
  • 配置底线:1核CPU/1GB内存/1Mbps带宽(单用户调试完全够用)

2.2 服务端安装流程

以阿里云ECS为例(其他Linux服务器操作相同):

# 下载最新版frp(替换版本号) wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz # 解压并进入目录 tar -zxvf frp_*.tar.gz cd frp_*/ # 编辑配置文件(关键步骤) nano frps.ini

服务端最小化配置示例:

[common] bind_port = 7000 vhost_http_port = 8080 token = your_secure_token_here # 启用Dashboard监控 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = secure_password

启动服务端的两种推荐方式:

  1. 直接运行(测试环境适用):

    ./frps -c frps.ini
  2. 系统服务(生产环境必选):

    sudo cp systemd/frps.service /etc/systemd/system/ sudo systemctl enable frps sudo systemctl start frps

3. Windows客户端配置实战

3.1 开发环境准备

假设我们有以下本地服务需要暴露:

  • IIS运行的ASP.NET项目(端口80)
  • Node.js开发服务器(端口3000)
  • Python Flask应用(端口5000)

下载Windows版frp后,修改frpc.ini配置文件:

[common] server_addr = your_server_ip server_port = 7000 token = your_secure_token_here # IIS站点配置 [web_iis] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = dev.yourdomain.com # Node.js调试 [web_node] type = http local_ip = 127.0.0.1 local_port = 3000 custom_domains = api.yourdomain.com # Flask应用 [web_flask] type = http local_ip = 127.0.0.1 local_port = 5000 custom_domains = test.yourdomain.com

3.2 二级域名解析技巧

要实现custom_domains功能,需要在DNS服务商处添加:

  • 主域名解析:*.yourdomain.com→ 服务器IP(泛解析)
  • 单独记录:dev.yourdomain.com→ 服务器IP(可选)

注意:国内服务器需完成ICP备案才能使用80/443端口,调试建议用8080等非标准端口。

3.3 开机自启动方案

创建start_frpc.bat文件:

@echo off :start frpc.exe -c frpc.ini timeout /t 5 goto start

然后通过任务计划程序设置触发条件:

  1. Win+R输入taskschd.msc
  2. 创建任务 → 设置"当用户登录时"触发
  3. 操作选择"启动程序"并指向bat文件

4. 高级安全防护策略

4.1 IP访问白名单

frps.ini中添加:

[common] ... allow_ports = 10000-20000 # 只开放指定端口范围 privilege_allow_ips = 192.168.1.100, 203.0.113.45 # 客户端IP白名单

4.2 HTTPS加密传输

推荐使用Caddy自动申请证书:

[web_secure] type = https local_port = 443 custom_domains = secure.yourdomain.com # 在Caddyfile配置: secure.yourdomain.com { reverse_proxy localhost:8080 }

4.3 流量监控与告警

通过frp Dashboard可以实时查看:

  • 每个服务的连接数
  • 流量统计图表
  • 错误日志分析

对接Prometheus的配置示例:

# frps.ini metrics_addr = 0.0.0.0 metrics_port = 9000

5. 典型问题排查指南

症状1:客户端显示连接成功,但无法访问服务

  • 检查服务器安全组规则
  • 确认本地防火墙放行相关端口
  • 测试telnet your_server_ip 7000验证基础连通性

症状2:频繁断开重连

  • 在客户端配置心跳参数:
    [common] tcp_mux = true heartbeat_interval = 30 heartbeat_timeout = 90

症状3:HTTPS证书错误

  • 确保证书链完整
  • 检查时间同步(特别是Windows客户端)
  • 强制指定TLS版本:
    [web_secure] tls_version = tls1.2

最近在为客户部署混合开发环境时,发现将frp客户端运行为Windows服务更稳定。使用NSSM工具可以完美解决:

nssm install frpc "C:\path\to\frpc.exe" "-c C:\path\to\frpc.ini" nssm start frpc
http://www.jsqmd.com/news/712298/

相关文章:

  • 2026年Q2高企申请服务品牌名录:郑州高企陪跑/郑州代理记账/郑州税务代理/郑州税务咨询/郑州财务外包/郑州跨境电商/选择指南 - 优质品牌商家
  • 实时手机检测-通用开源模型效果展示:单类phone高精度检测真实截图
  • Qwen3-4B-Instruct惊艳效果:数学证明推导+LaTeX公式生成质量实测
  • 功能全面的进销存+一体化ERP源码系统(含完整后台)
  • 基于Rust与WASM的现代化国际象棋服务器:为AI智能体提供博弈服务
  • 告别手动更新!在群晖DSM 7.x上为Docker服务自动续签SSL证书(acme.sh实战)
  • 别再手动传文件了!用Ansible自动化部署Kettle 8.3服务器(附Playbook)
  • Murmur:开源全局语音输入工具,解放开发者双手
  • 从零实现Llama 3.1推理引擎:Go语言手搓大模型核心原理
  • 实时内核中断处理架构演进与Abassi混合架构实践
  • 手把手教你用LongCat-Image-Editn V2:上传图片输入中文,5分钟搞定专业级修图
  • Flux.1图像转换技术:面部表情合成的实践指南
  • GLM-4.6V-Flash-WEB开箱即用:智谱开源视觉模型,3步完成本地部署
  • 大模型代码生成质量差异分析与优化实践
  • AI衣品升级报告-01-男装
  • Sipeed NanoKVM-USB:USB 3.0全高清KVM解决方案解析
  • 2026年语音交友APP怎么选:潮玩盲盒/盲盒开箱/相亲交友/线上盲盒/聊天交友/脱单交友/附近交友/交友app/选择指南 - 优质品牌商家
  • 开源AI助手Claw生态全解析:从架构设计到边缘部署实践
  • 混沌系统・端侧自治技术·阿雪心学·无相无界(6)—东方仙盟
  • AIGC如何重塑软件开发流程:从工具应用到流程再造
  • 5分钟快速上手!Draw.io电子工程绘图库完整指南
  • 告别驱动依赖:用 Python/Node.js 通过 TDengine 的 6041 端口 REST API 轻松读写数据
  • 告别盲搜!用CheatEngine的字符串引用功能精准定位UE4游戏中的FNamePool
  • Go install 命令失效原因解析与正确使用指南
  • 如何高效使用untrunc:损坏视频修复的完整新手指南
  • 别再手动算占空比了!用STM32CubeMX的PWM输入模式,5分钟搞定TIM9捕获PWM信号
  • 深度学习图像恢复实战:基于Blurr库的统一处理框架与应用
  • AI衣品升级报告-02-女装
  • Lychee-Rerank一文详解:从Lychee逻辑移植到Qwen适配的完整技术路径
  • 手机上的Ubuntu开发环境:用VSCode SSH远程连接Termux的完整配置流程