最近在帮朋友做个微信公众号的开发,在开发过程中遇到一个比较麻烦的事情,就是每次修改好代码编译后重新部署到服务器才能调试,如此就很麻烦。后来想到自己有内网穿透的服务器,可以搭配Nginx使用反向代理实现微信消息转发到本地机子。
操作前提:
1.拥有一台外网服务器;
2.已备案的域名(微信要求)。
frp
关于frp及搭建frp服务器可参考我另一篇文章 使用frp实现内网穿透 。
Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
配置
配置服务器frps
修改frps.ini
文件,设置http访问端口为8000
,修改完成后重启frps
服务;
# frps.ini
[common]
bind_port = 7000
# http服务端口
vhost_http_port = 8000
配置客户端frpc
修改客户端frpc.ini
文件,添加以下配置,修改完成后重启frpc
服务;
[web_server]
type = http
local_port = 80 #本地端口
custom_domains = www.example.com
配置Nginx
配置反向代理,将请求转发至8000
端口;
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配置文件是否正确:
nginx -t
如果输出如下则说明配置正确,此时就可以使用nginx -s reload
重启Nginx。
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
,测试请求的是否是本机。
原文地址:https://www.lwhweb.com/2017/11/02/use-frp-forward-wechat-message-local-machine/