【保姆级】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

六、安全核心说明

  1. 2778 端口无需公网开放
    Nginx 与 FRP 同服务器,直接访问 127.0.0.1:2778,不走公网,防端口扫描、防攻击。

  2. 安全组仅需开放

  • 7000(FRP通信)
  • 80、443(网站访问)

七、Windows 永久后台运行(不掉线)

默认 CMD 窗口关闭即断开,生产环境推荐 NSSM 托管系统服务

  1. 下载 NSSM,和 frpc.exe 同目录
  2. 管理员 CMD 执行:
nssm install frpc
  1. 配置:
  • 程序路径: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 专属封面标签、分类、关键词吗?

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐