背景

为什么会有这篇文章呢,肯定不会没事瞎写东西,太浪费时间了,因为最近在调研微信小程序,所以我也是被逼的┑( ̄Д  ̄)┍。微信小程序,如果不设置 appid的话,接口可以随便调试,但是如果要调用微信用户信息、获取微信和用户对应的 openid这样的操作,那就要有一个 appid 了,我党管的比较严,微信又比较听话,appid这个东西不是你说要就能要,你要找到一个组织,然后让组织的大头领告诉你 appid,以及能发出请求的域名。然而,微信这个坑爹货,后台设置的能发出请求的域名,居然是 https 的,这就有点坑爹了,所以,我讲讲我是怎么在本地搭建 https 测试服务器的。

步骤

记得我讲的是Mac电脑啊,其他的我也不会啊。

https 怎么安全啊,ssl 怎么加密啊,我也就不讲了,讲也讲不明白,直接上步骤吧。这可是我百度了好久才搞出来的。

  • 第一步:生成私钥, openssl genrsa -des3 -out app.key 1024
  • 第二步:生成签署申请, openssl req -new -key app.key -out app.csr
  • 第三步:生成服务器的私钥, openssl rsa -in app.key -out server.key
  • 第四步:生成给网站服务器签署的证书, sudo openssl req -new -x509 -days 3650 -key server.key -out server.crt

好了,ssl 的自签名server.key,server.crt就搞定了,找一个好点的地方,把他们放进去。

然后本地搭服务器啊,我用的是 XAMPP 的mac 版本,原来搭建了 vhost,怎么搭 vhost,等我有空看写一下。

直接贴配置

这个是httpd-vhosts.conf里面的配置

<VirtualHost *:80>

    ServerAdmin zengyuanman123@163.com
    DocumentRoot "/Users/weiber/htdocs/gitlab/jfz_fortune_wxapp/node"
    ServerName wx.jinfuzi.net
    
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
<VirtualHost *:443>
    ServerAdmin zengyuanman123@163.com
    DocumentRoot "/Users/weiber/htdocs/gitlab/jfz_fortune_wxapp/node"
    ServerName wx.jinfuzi.net
    
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "/Applications/XAMPP/xamppfiles/etc/ssl/server.crt"
    SSLCertificateKeyFile "/Applications/XAMPP/xamppfiles/etc/ssl/server.key"
    
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

然后就没有然后了,可以通过https://wx.jinfuzi.net来访问了。

关于 websocket 的 ws以及 wss 的配置

首先添加引用,最后一个很重要

LoadModule proxy_module modules/mod_proxy.so  
LoadModule proxy_http_module modules/mod_proxy_http.so  
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 

配置如下

<VirtualHost *:80>
    ServerAdmin zengyuanman123@163.com
    DocumentRoot "/Users/weiber/htdocs/gitlab/jfz_fortune_wxapp/node"
    ServerName wx.jinfuzi.net

    ProxyPass /socket.io/1/websocket/ ws://127.0.0.1:3000/socket.io/1/websocket/
    ProxyPassReverse /socket.io/1/websocket/ ws://127.0.0.1:3000/socket.io/1/websocket/

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
<VirtualHost *:443>
    ServerAdmin zengyuanman123@163.com
    DocumentRoot "/Users/weiber/htdocs/gitlab/jfz_fortune_wxapp/node"
    ServerName wx.jinfuzi.net

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "/Applications/XAMPP/xamppfiles/etc/ssl/server.crt"
    SSLCertificateKeyFile "/Applications/XAMPP/xamppfiles/etc/ssl/server.key"

    ProxyPass /socket.io/1/websocket/ ws://127.0.0.1:3000/socket.io/1/websocket/
    ProxyPassReverse /socket.io/1/websocket/ ws://127.0.0.1:3000/socket.io/1/websocket/

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>