微信开发的本地调试只支持80号端口,实验了很多办法,总结一下:
办法一:
公司使用的是联通ADSL, 在路由器上做完端口映射后发现电信/联通封了80端口,所以这个办法走不通了。
办法二:
搜可以下,可以用ngrok,飞快的下载,设置好了。把ngrok的URL填入微信设置时,微信提示这种网址存在安全风险,已经不支持了。
办法三:
这个方式要求你有一台外网linux服务器。微信要求这台机器的域名是已经通过ICP备案的,你可以用你开发域名的一个子域名指向这个服务器。比如http://wechatdev.yourdomain.com
(1)首先:把该linux服务器占用80号端口的服务关闭;
(2)打开服务器的远程转发功能,执行以下命令:
sudo nano /etc/ssh/sshd_config
在/etc/ssh/sshd_config文件末尾加入一句:
GatewayPorts yes
然后重启SSH:sudo service ssh restart
尝试了阿里云和Azure 的Linux虚拟机,有以下要注意的:
阿里云
打开防火墙,允许访问80端口
Azure:
打开防火墙,允许访问80端口
Azure比阿里云特别的地方是,root用户默认是没打开的。所有我们需要打开root 用户
- 用SSH登录,你创建虚拟机的时候应该有一个用户。
- 执行以下命令:
sudo nano /etc/ssh/sshd_config
修改
PermitRootLogin without-password
为:
#PermitRootLogin without-password (注释掉)
PermitRootLogin yes
- 然后重启SSH:
sudo service ssh restart
- 然后切换到root 用户
sudo su
- 检查root 用户是否锁定(LOCK表示锁了)
[root@Linux ~]# grep root /etc/shadow
root:*LOCK*:14600::::::
- 给root 一个密码,这样就启用root了
[root@Linux ~]# passwd
最后一步,设置端口转发,在本机上运行(假设你使用MAC):
ssh -R 80:localhost:9001 root@wechatdev.yourdomain.com (这句话的意思是,把发到wechatdev.yourdomain.com:80的流量都转发到本地的9001端口。