使用frp内网穿透实现微信本地调试

最近在帮朋友做个微信公众号的开发,在开发过程中遇到一个比较麻烦的事情,就是每次修改好代码编译后重新部署到服务器才能调试,如此就很麻烦。后来想到自己有内网穿透的服务器,可以搭配Nginx使用反向代理实现微信消息转发到本地机子。

操作前提:

1.拥有一台外网服务器;
2.已备案的域名(微信要求)。

frp

关于frp及搭建frp服务器可参考我另一篇文章 使用frp实现内网穿透

Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

配置

配置服务器frps

修改frps.ini文件,设置http访问端口为8000,修改完成后重启frps服务;

1
2
3
4
5
6
# frps.ini
[common]
bind_port = 7000

# http服务端口
vhost_http_port = 8000

配置客户端frpc

修改客户端frpc.ini文件,添加以下配置,修改完成后重启frpc服务;

1
2
3
4
[web_server]
type = http
local_port = 80 #本地端口
custom_domains = www.example.com

配置Nginx

配置反向代理,将请求转发至8000端口;

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name www.example.com; # 绑定域名

location / {
proxy_pass http://localhost:8000; # 转发至本机8000,即在frps.ini中配置的vhost_http_port
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

检查Nginx配置文件是否正确:

1
nginx -t

如果输出如下则说明配置正确,此时就可以使用nginx -s reload重启Nginx。

1
2
nginx: the configuration file /{nginx-path}/conf/nginx.conf syntax is ok
nginx: configuration file /{nginx-path}/conf/nginx.conf test is successful

重启完成后即可在浏览器中访问www.example.com,测试请求的是否是本机。