购买服务器,域名,备案,从0开始使用frps,frpc,nginx实现内外网穿透,实现微信公众号服务器配置
1.总述
1.1情况说明
我的项目部署在内网,想要把它配置到微信公众号就需要进行内网穿透,然后进行域名解析(因为微信只支持使用域名方式发送,不能直接使用服务器公网IP地址),而且微信只支持http的80端口和https的443端口。
1.2步骤总述
1.购买(ECS)云服务器,购买域名,并进行域名解析,域名SSL证书申请(注:后面云服务器简称为ECS,本地部署项目的服务器称为Windows)
2.ECS部署frps,nginx
3.Windows部署frpc,连接成功
1.3软件用途简述
frps和frpc分别是用于ECS和windows来进行内网穿透的,使用隧道把访问ECS上某一端口的请求发送到对应Windows上,从而实现穿透。
nginx用于域名解析,通过监听,把发送给域名的请求转发给ECS服务器的固定端口。(可监听不同域名的请求转发给ECS上的不同端口)。
2.实现步骤
2.1购买ECS云服务器
购买网址推荐阿里云:https://www.aliyun.com

性能要求不高推荐小预算套餐

如果有经济实力推荐地区选择中国香港后面购买的域名可以不用备案(只是要贵很多),国内其它地方都需要备案

镜像组选择Ubuntu

安全组把80和443选上,配置微信公众号会使用到,也可以购买后再添加

购买成功后可在实例中选择你购买的地区看到你的ECS,点击进入实例可看到你的具体信息以及公网IP。至此ECS购买完毕。

2.2购买域名
搜索域名,点击进入域名与网站

搜索你喜欢的域名后直接注册

左边控制台可以进入我们购买的所有资源


点击进入域名后能进入我们域名

点击解析设置后进行域名到公网ip的映射

点击添加记录进行映射

之前注册的域名是一级域名,比如xxx.com,你这里填写二级域名,比如填了yyy,你就是把yyy.xxx.com域名映射到你的ECS公网ip上去了

2.3备案(若买的香港服务器则不用进行这一步)


审核提交后就只能等了。
2.4SSL证书申请
搜索数字证书管理服务,点击SSL证书管理


选择个人测试证书即可,每年可以领一份免费版

购买成功后点击创建证书,填写你的域名和信息,其他的默认就行

审核成功后点击最右边的更多,进行证书下载,这个文件后面需要配置到ECS中


2.4ECS配置
2.4.1SSL证书配置
接下来进行ECS相关配置,首先进入ECS服务器。在实例中点击远程连接,直接免密登录ECS

登录后是一个终端

在终端中使用命令创建一个文件夹用于存放刚才申请后下载的SSL证书
sudo mkdir -p /etc/nginx/ssl
用 scp 进行文件上传(在本地电脑终端执行):
scp cert.pem key.pem root@:/etc/nginx/ssl/
首先要确定你下载的文件解压在哪里的,比如我的在D:certs,先使用cmd进入这个文件中

然后我的命令就是:
scp D:certs文件名.com.pem D:certs文件名.com.key root@ECS公网IP:/etc/nginx/ssl/
若提示The authenticity of host 'ECSip地址' can't be established.......这条信息是 正常提示,不是报错,意思是你的本地电脑第一次连接这个 ECS 主机,它的 SSH 公钥还没被记录在你的本地。
输入yes也输不了
解决方法:
先手动添加到 known_hosts,在 PowerShell 里先用 SSH 连接一次,确认主机:

输入:
ssh root@ECS公网ip
第一次会提示:
The authenticity of host 'xxx' can't be established. Are you sure you want to continue connecting (yes/no)? 输入 yes 后回车,之后 CMD 下的 scp 就不会再卡住了
再重新在cmd下执行文件上传命令即可。
以下就是成功了

2.4.2Nginx下载配置
1.安装Nginx,在 Ubuntu ECS 终端依次执行:
sudo apt update
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
安装完成后,你可以测试 Nginx 是否运行:
sudo systemctl status nginx
正常运行会显示 active (running)
2.创建 Nginx 配置文件(推荐单独建一个,例如 api.conf):
sudo nano /etc/nginx/conf.d/api.conf
文件中填入配置信息:
server {
listen 80; #监听你的域名的哪一个端口
server_name yyy.xxx.com; #你的域名
location / {
proxy_pass http://127.0.0.1:8081; #监听到这个域名后转发到你的ECS的哪一个端口,这里是8081端口
proxy_set_header Host $host;
}
}
server {
listen 443 ssl; #和上面同理,想监听几个端口写几个,因为443端口需要https所以下面要填刚才上传的SSL证书地址
server_name yyy.xxx.com;
ssl_certificate /etc/nginx/ssl/xxxxxx.com.pem;
ssl_certificate_key /etc/nginx/ssl/xxxxxx.yunyangyy.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 可选安全增强
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location / {
# 这里先指向 ECS 本地测试端口
proxy_pass http://127.0.0.1:8082;
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;
}
}
注意:
-
ssl_certificate和ssl_certificate_key路径要和你上传的证书一致
填写好后Ctrl + O → 回车 保存 → Ctrl + X退出
检查 Nginx 配置并重载:
sudo nginx -t # 检查配置是否正确
sudo systemctl reload nginx
如果没有报错,就说明 Nginx 已经可以使用 HTTPS 了。
测试 HTTPS
浏览器访问:https://yyy.xxx.com ,如果能看到 Nginx 默认页面或返回的内容,说明 HTTPS 配置成功
若访问提示
502 Bad Gateway
nginx/1.24.0 (Ubuntu)说明Nginx 服务器正在运行,但它无法连接到后端的应用服务。 可能是你配置nginx文件时的端口没有服务在运行。
2.4.3ECS下载配置frps
1.在你的服务器上,进入一个目录,比如 ~/downloads:
mkdir -p ~/downloads && cd ~/downloads
2.下载最新版本(以 v0.62.0 为例):
wget https://github.com/fatedier/frp/releases/download/v0.62.0/frp_0.62.0_linux_amd64.tar.gz
3.解压
tar -zxvf frp_0.62.0_linux_amd64.tar.gz
cd frp_0.62.0_linux_amd64
4.你会看到 frps, frps.ini, frpc, frpc.ini 等文件。
5.创建 frps 配置文件
建议放在 /etc/frp/ 目录:
sudo mkdir -p /etc/frp
sudo nano /etc/frp/frps.ini
6.在文件里写入示例配置(适合你的 HTTPS 映射):
[common]
# frps 监听端口,frpc 客户端连接用
bind_addr = 0.0.0.0
#frps使用的端口,后面windows上的frpc也会用到
bind_port = 7777
token=123456
# 前端服务转发
[web-frontend]
type = tcp
remote_port = 8082
# 后端 API
[web-backend]
type = tcp
remote_port = 8081
启动 frps:
cd ~/downloads/frp_0.62.0_linux_amd64
sudo ./frps -c /etc/frp/frps.ini &
检查 frps 是否启动成功:
netstat -an | grep 7777
注意,以上涉及到的所有端口都需要在ECS实例的安全组中把这些端口配置上


2.5Windows配置frpc
1.下载 frpc(FRP 客户端)
下载最新的 frp Windows 版 ZIP,打开这个链接:
👉 https://github.com/fatedier/frp/releases
下载好后解压,创建frpc.ini文件,进行frpc配置,内容如下(需要和ECS上的对应):
[common]
server_addr = ECS公网ip
server_port = 7777
token = 123456
# 映射前端服务
[web-frontend]
type = tcp
local_ip = windows本地ip
local_port = 8082
remote_port = 8082
# 映射后端API服务
[web-backend]
type = tcp
local_ip = windows本地ip
#本地服务运行的端口
local_port = 8080
remote_port = 8081
以管理员身份打开 cmd,执行:
frpc.exe -c frpc.ini
运行frpc。
至此内网穿透完成。后续可能还会进行更新,有什么问题欢迎在评论区进行讨论。
微信公众号服务器配置:javaweb项目连接微信公众号 微信公众号服务器部署教程-CSDN博客。








