【保姆级】FRP内网穿透 + Nginx HTTPS 安全部署教程(微信公众号适配、无暴露端口)
·
【保姆级】FRP内网穿透 + Nginx HTTPS 安全部署教程(微信公众号适配、无暴露端口)
前言
网上大部分 FRP 教程都是直接暴露公网穿透端口,安全性差、容易被扫描攻击,且无法用于微信公众号域名校验。
本文提供一套生产级安全架构:
- 不暴露穿透端口
- 全程 HTTPS 加密
- 支持微信域名校验、回调
- Windows 后台永久在线不掉线
- 适合长期开发、小程序/公众号调试
一、整体架构原理
用户访问域名 → Nginx 443 → 服务器本地2778 → FRP隧道 → 本地电脑3000项目
核心优势:
2778 穿透端口仅服务器内网访问,不对外暴露,极致安全
二、端口规划(生产安全版)
| 端口 | 用途 | 公网开放 |
|---|---|---|
| 7000 | FRP 客户端服务端通信 | ✅ 必须开放 |
| 80/443 | HTTP跳转、HTTPS访问、微信校验 | ✅ 必须开放 |
| 2778 | FRP内网转发端口 | ❌ 无需开放 |
| 7500 | FRP后台面板(可选) | 可选 |
三、Linux 服务端部署 FRPS
1. 下载安装 FRP(最新版 v0.69.0)
wget https://github.com/fatedier/frp/releases/download/v0.69.0/frp_0.69.0_linux_amd64.tar.gz
tar -zxvf frp_0.69.0_linux_amd64.tar.gz
cd frp_0.69.0_linux_amd64
mv frps /usr/local/bin/
mkdir -p /etc/frp
mv frps.toml /etc/frp/
2. 服务端配置 /etc/frp/frps.toml
[common]
bind_port = 7000
token = "自定义复杂密钥"
# FRP监控面板
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "自定义面板密码"
3. 配置 systemd 开机自启
创建服务文件
vim /etc/systemd/system/frps.service
写入内容
[Unit]
Description=FRP Server Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
4. 启动并设置开机自启
systemctl daemon-reload
systemctl start frps
systemctl enable frps
四、Windows 客户端 FRPC 部署
1. 下载地址
FRP 官方 Releases:
https://github.com/fatedier/frp/releases
下载:frp_0.69.0_windows_amd64.zip
2. 客户端 frpc.toml 配置
实现:本地3000端口 → 服务器2778端口穿透
[common]
server_addr = "你的服务器公网IP"
server_port = 7000
token = "和服务端密钥保持一致"
[[proxies]]
name = "local-web-service"
type = "tcp"
local_ip = "127.0.0.1"
local_port = 3000
remote_port = 2778
3. 测试启动
frpc.exe -c frpc.toml
成功提示:
login to server success
start proxy success
五、Nginx 完整 HTTPS 生产配置
功能支持
- 80 强制跳转 HTTPS
- 微信域名校验文件访问
- 反向代理 FRP 内网端口
- 支持 WebSocket
- 适配前后端项目
# HTTP 80 跳转 + 微信校验
server {
listen 80;
server_name 你的域名;
root /home/xiangmu/wx;
# 微信校验文件
location = /MP_verify_xxxx.txt {
expires -1;
add_header Content-Type text/plain;
}
location / {
return 301 https://$host$request_uri;
}
}
# HTTPS 443 正式业务
server {
listen 443 ssl;
server_name 你的域名;
ssl_certificate /etc/nginx/ssl/xxx.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
root /home/xiangmu/wx;
location = /MP_verify_xxxx.txt {
expires -1;
add_header Content-Type text/plain;
}
# 核心:反向代理到 frp 本地端口
location / {
proxy_pass http://127.0.0.1:2778;
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 X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 10s;
proxy_read_timeout 300s;
client_max_body_size 20M;
}
}
重载 Nginx
nginx -t
nginx -s reload
六、安全核心说明
-
2778 端口无需公网开放
Nginx 与 FRP 同服务器,直接访问 127.0.0.1:2778,不走公网,防端口扫描、防攻击。 -
安全组仅需开放
- 7000(FRP通信)
- 80、443(网站访问)
七、Windows 永久后台运行(不掉线)
默认 CMD 窗口关闭即断开,生产环境推荐 NSSM 托管系统服务
- 下载 NSSM,和 frpc.exe 同目录
- 管理员 CMD 执行:
nssm install frpc
- 配置:
- 程序路径:frpc.exe
- 启动参数:
-c frpc.toml
安装后开机自启、后台静默运行,无需手动开窗口。
八、最终实现效果
- 本地项目运行:
127.0.0.1:3000 - 外网访问:
https://你的域名 - 支持微信公众号/小程序回调校验
- 全程加密、无暴露高危端口、稳定不掉线
九、常见问题排查
1. FRP 连接失败
- 服务器 7000 端口安全组放行
- 客户端/服务端 token 完全一致
- 服务端 frps 正常启动
2. 域名打不开页面
- Nginx 代理地址为
127.0.0.1:2778 - 本地 3000 服务正常运行
- FRP 隧道在线成功
3. 微信校验失败
- 校验文件放置服务器
/home/xiangmu/wx - 80 端口不拦截、可直接访问 txt 文件
十、总结
这套 FRP + Nginx HTTPS 穿透方案,是目前开发、测试、准生产最优方案。
相比传统 Ngrok、端口映射:更安全、更稳定、支持微信业务、可长期在线使用。
我已经全部脱敏、格式标准化、代码块统一、排版完全适配 CSDN,直接粘贴发布即可!
需要我帮你加上 CSDN 专属封面标签、分类、关键词吗?
更多推荐

所有评论(0)