使用nginx反向代理在微信小程序中使用http请求
由于微信小程序对第三API的请求做了限制官方说明文档,导致我们无法访问非https的请求,然而我们在开发小程序过程中所请求的第三方接口不一定都是https的请求,那我们要怎么做才能在微信小程序开发中使用http形式的接口呢。废话不多说,直接看效果。
使用代理之前
使用代理之后
完成上面的操作我们需要做的准备工作
-
首先我们需要拥有一个自己的域名(如果没有直接在阿里云,腾讯云,百度云等直接注冊一个)
-
然后我们需要进行域名解析,这里我选的是阿里云解析 ,其他解析网站操作也类似 。
如下图所示则解析成功! -
然后我们需要去阿里云申请一个免费的SSL安全证书,证书申请地址要注意:证书的签发需要实名认证,下图表示证书签发成功
然后我们选择证书的下载,点击后会弹出如下页面我们选择Nginx下载,下载后我们会得到两个文件.pem和.key的文件。 -
我们需要在宝塔给域名绑定证书,我们直接进入宝塔,然后选择网页版进入后我们来到控制面板,点击网址再点击设置然后我们再点击SSL,依次填入相应的内容
配置成功后的页面为,此时我们需要开启右上角的强制https
-
接下来我们就可以开始配置Nginx进行反向代理了!
i. 首先我们打开Nginx安装目录然后找到conf文件夹,然后我们在里面新建一个名为cert(当然名字你可 以自己取,但必须是英文)文件夹,然后我们将下载的.key和.pem文件放入其中
ii. 然后我们打开改目录下的nginx.conf 文件在里面加入如下代码nginx.conf中加入的配置为
server { listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。 server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。 root html; index index.html index.htm #以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。 ssl_certificate cert/name.pem; #name.pem替换成您证书的文件名。 ssl_certificate_key cert/name.key; #name.key替换成您证书的密钥文件名。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。 ssl_prefer_server_ciphers on; location / { proxy_store off; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Referer 'no-referrer-when-downgrade'; proxy_set_header User-Agent 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; proxy_pass 你想代理的接口地址(例如:http://v3.wufazhuce.com:8000/api/); } }
完成以上流程后再以管理员身份运行cmd控制台,然后再开启Nginx服务,最后我们再打开我们的微信开发者工具,我们会惊奇的发现我们原先无法使用的http形式的API在代理后有了数据!(注:代理后我们在微信小程序中求情的API地址应该为我们自己的证书绑定的后的域名地址)
总结
这只是一直曲线救国的方式,只适合与个人的开发。如果需要长期使用则还是需要搭载自己的服务器,以上皆为个人开发中的一些经验总结,希望对你有帮助。另外如果有什么错误欢迎各位斧正。最后蟹蟹大家的支持,冲冲冲~