微信公众号本地开发环境配置

微信公众后台开发要求

微信公众后台开发要求开发者有外网可访问的 Web 服务,且运行在标准端口(http 80、https 443)。

本地开发方案

采用 ssh 端口远程转发,将远程服务器上 80 端口的流量通过已建立的 ssh 连接转发到本地机器的任意端口。

因此要求远程服务器上 80 端口不能跑其它服务,有 root 帐号,有独立的外网 IP。

可以考虑花几十块买一个 VPS,开发过程中用一下。

远程服务器配置

假定服务器的操作系统为 CentOS

开启 ssh 远程转发

修改 /etc/ssh/sshd_config ,添加以下配置

GatewayPorts yes

重启 sshd 服务

/etc/init.d/sshd restart
  • 参考 man 1 ssh

    By default, TCP listening sockets on the server will be bound to the loopback interface only. This may be overridden by specifying a bind_address. An empty bind_address, or the address ‘*’, indicates that the remote socket should listen on all interfaces. Specifying a remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).

对外开放 80 端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save

本地机器配置

建立 SSH 隧道

假设远程服务器外网 IP 为 x.x.x.x 、ssh 端口为 27906 ,本地机器的 Web 服务监听在 8001 端口

ssh -C -f -N -g -v -R :80:127.0.0.1:8001 root@x.x.x.x -p 27906

命令选项请参考 man 1 ssh

启动本地 Web 服务

8001 端口上运行 web 服务。

测试访问

curl http://x.x.x.x/

应该会响应本地机器上 http://localhost:8001 的内容了。