小程序:配置Https服务器(Nginx)

小程序与普通移动端开发的一个很大的不同之处就在于小程序的ajax 请求是使用https 协议与服务器端进行通信的。所以要开发小程序,首先要搭建https 服务器。这篇文章记录了在nginx 做转发的服务器中如何一步步完成https 配置。

1. http 和https

在开始行动之前,我们必须先搞清一个问题,http 和https 的区别是什么?要配置https 需要执行哪些步骤的操作?关于http 和https 网上也是有大量的文章来讨论,也是面试时非常常见的一个问题,所以这里就不细讲。简单来说,https 相对于http 的区别就在于https 是使用密文传输,而http 是使用明文传输的,这也是https 比http 更安全的原因。

既然是密文传输,那么是用什么进行加密的?加密操作是由服务器主导的,那我们又凭什么相信服务器不是由坏人冒充的?这就是https 要解决的事情。具体细节可参考: https 原理详解

看完以上加密细节操作可以得出一个阶段性的结论,要完成https 的配置实际上就是在服务器上安装一个由CA(公信机构)颁发的证书和一对非对称秘钥(包含公钥和私钥)。于是在小程序应用中完成https 的配置流程可以概括为以下几步:获取证书、在服务器上安装证书、小程序后台添加合法域名。

2. 开始行动

2.1 获取证书

一般服务器提供商(比如说阿里云)都会提供证书服务,但是通常是需要花钱购买的。而通过FreeSSL 我们可以获得免费的证书,具体操作流程如下:

  • 输入你的域名(域名需要已经备案,具体怎么备案可以去服务器提供商管理平台查看),点击创建证书,会获得以下结果:


  • 登录域名管理网站(我的是阿里云),选择域名与网站 -> 云解析DNS -> 添加解析,并将上图中的信息填写到相应的位置,然后点击确认。


  • 几分钟后,在FreeSSL 页面中点击验证,验证通过后可以下载证书,下载下来的证书中包含了CA 证书和对称秘钥(私钥只会在第一次被下载下来,所以要做好备份!)

2.2 服务器安装证书

获取到证书以后,我们再来到服务器上进行安装,所谓的安装实际上就是将上一步中下载下来的证书(包含两个文件,一个是.pem,一个是.key,.pem 中包含两个证书)放在服务器上的某一个位置,然后修改nginx 配置文件使之以https 协议与客户端进行通信。

  • 证书文件放置位置可以选择:/etc/nginx/certs,没有这个位置的话可以新建
  • nginx 配置文件主要修改如下(如果没有自行修改的话,nginx 配置文件位置为 /usr/local/nginx/conf/nginx.conf):
server {
    listen 80;
    # about ssl
    listen 443 ssl;
    ssl_certificate /etc/nginx/certs/full_chain.pem;
    ssl_certificate_key /etc/nginx/certs/private.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;

    # server name
    server_name  xxx.xxx.xxx;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

2.3 小程序后台配置合法域名

登录小程序后台,点击设置 -> 开发设置,添加你自己的域名为合法域名即可。

这里要注意的一个问题是,微信公众平台和小程序后台是不能绑定一个邮箱的,所以两个平台如果都有账号的话不要记混了。

3. 可能遇到的问题

3.1 问题一:the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/ng...

解决办法:参考 https://www.cnblogs.com/ghjbk/p/6744131.html 安装ssl_module 即可

3.2 问题二:"/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

解决办法:

// 使用nginx -c的参数指定nginx.conf文件的位置
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

3.3 问题三:配置完成后无法通过https 访问页面,并且在nginx access log 中接收不到访问记录

解决办法:记得阿里云开放443 端口啊!

猜你喜欢

转载自blog.csdn.net/qq_33594380/article/details/80416108
今日推荐