微信小程序 Nginx环境配置详细介绍


Posted in Javascript onFebruary 14, 2017

微信小程序Server环境配置详解

主要内容:

1. SSL免费证书申请步骤
2. Nginx HTTPS 配置
3. TLS 1.2 升级过程

微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请SSL证书

小程序也要求 TLS(传输层安全协议)的版本至少为 1.2,在配置好 https之后,如果 TLS 的版本较低,就涉及到升级问题

所以 Server端环境配置的主要步骤:

  1. 申请 SSL 证书
  2. 配置web服务器支持https(我使用的是nginx)
  3. 升级到 TLS 1.2

SSL证书申请

https 需要使用SSL证书,这个证书的价格为每年三五千到一万多,对于小团队或者是想熟悉一下小程序的用户来说,这个价格还是比较高的,这种情况可以选择免费证书,另外,也可以考虑一下云服务,例如 野狗LeanCloud 这些成熟的服务平台,都支持 https,如果这些平台能满足自己的业务需求,就省掉了很多麻烦

免费证书:阿里云上的 赛门铁克 免费型DV SSL

申请过程

wanwang.aliyun.com

登录控制台,点击左侧菜单中的 安全 -> 证书服务,这个页面中右上角有 购买证书 按钮,点击进入购买页,选择免费型DV SSL,购买

微信小程序 Nginx环境配置详细介绍

订单金额为0元,只是走一遍购买流程,完成后回到证书服务页面,可以在列表中看到一个证书

微信小程序 Nginx环境配置详细介绍

首先进行 “补全” 操作,填写自己的域名和基本信息

之后 “补全” 连接会变为 “进度”,点击后根据提示操作,主要是验证自己的服务器,我选的是文件验证,下载一个文件上传到自己服务器,等待验证

验证没问题后,大概10分钟左右就可以下载SSL证书了

Nginx HTTPS 配置

证书上传到nginx目录下,例如

/usr/local/nginx/cert

修改 conf/nginx.conf

配置 HTTPS server 块儿,添加SSL配置

# HTTPS server
#
server {
 listen  443 ssl;
 server_name localhost;
 ......
 
 ssl on;
 ssl_certificate /usr/local/nginx/cert/213994146300992.pem;
 ssl_certificate_key /usr/local/nginx/cert/213994146300992.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 / {
  root html;
  index index.html index.htm;
 }

 ......
 
}

重新加载配置文件,浏览器中使用 https 方式访问自己的域名,看是否可以正常访问

升级到 TLS 1.2

查看 TLS 版本

访问 https url 后,地址栏前面会有一个绿色小锁图标,点击它可以查看到 TLS 版本信息

微信小程序 Nginx环境配置详细介绍

如果没有达到 1.2 就需要升级

下面的操作环境为 centos linux

1)查看 openssl 版本

https://www.openssl.org/source/

1.0.2以下的版本就要升级,之前的版本官方都已经停止维护

2)升级 openssl

到官网下载新版

https://www.openssl.org/source/

例如下载到 /usr/local

升级

cd /usr/local
tar zxvf openssl-1.0.2j.tar.gz 
cd openssl-1.0.2j 
./config --prefix=/usr/local/openssl 
make && make install 
mv /usr/bin/openssl \
 /usr/bin/openssl.OFF 
mv /usr/include/openssl \
 /usr/include/openssl.OFF 
ln -s \
 /usr/local/openssl/bin/openssl \
 /usr/bin/openssl 
ln -s \
 /usr/local/openssl/include/openssl \
 /usr/include/openssl 
echo "/usr/local/openssl/lib"\
 >>/etc/ld.so.conf 
ldconfig -v

验证

openssl version -a

3)重新编译 nginx

升级OpenSSL之后,nginx需要重新编译,否则TLS还是旧版本的

下面是基本安装,如您需求更多,请自行调整

用到的软件

  • openssl
  • 前面已经安装完了
  • pcre

pcre安装:

下载地址

http://www.pcre.org/
例如下载到 /usr/local

cd /usr/local
tar -zxv -f pcre-8.39.tar.gz
cd pcre-8.39
./configure --prefix=/usr/local/pcre/
make && make install

zlib安装

下载地址 

http://www.zlib.net/
例如下载到 /usr/local

cd /usr/local
tar -zxv -f zlib-1.2.10.tar.gz
cd zlib-1.2.10
./configure --prefix=/usr/local/zlib/
make && make install

编译nginx:

tar zxvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
 
./configure --prefix=/data/nginx --with-http_ssl_module --with-openssl=/usr/local/openssl
tar -zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2

./configure \
--user=用户 \
--group=组 \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-openssl=/usr/local/openssl-1.0.2j \
--with-pcre=/usr/local/pcre-8.39 \
--with-zlib=/usr/local/zlib-1.2.10 \
--with-http_stub_status_module \
--with-threads

make && make install

编译完成后,记得把修改配置文件,添加好 SSL 的相关信息

然后启动nginx,访问 https url 再次验证 TSL 版本

Nginx编译安装时遇到的问题:

报错信息如下:

/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.10.2‘
make: *** [build] Error 2

需要说明的是,我这里编译所使用的Nginx源码是1.10.2的。根据报错信息我们知道,出错是因为Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,其实我们打开/usr/local/ssl/这个目录可以发现这个目录下是没有.openssl目录的,因此我们修改Nginx编译时对openssl的路径选择就可以解决这个问题了

解决方案:

打开nginx源文件下的/root/nginx-1.10.2/auto/lib/openssl/conf文件

找到这么一段代码:

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

修改成以下代码:

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

然后再进行Nginx的编译安装即可 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
Apr 20 Javascript
js动态控制table的tr、td增加及删除的具体实现
Apr 30 Javascript
Node.js插件的正确编写方式
Aug 03 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
Jan 04 Javascript
canvas滤镜效果实现代码
Feb 06 Javascript
vue教程之toast弹框全局调用示例详解
Aug 24 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
layui 表格操作列按钮动态显示的实现方法
Sep 06 Javascript
微信小程序实现蓝牙打印
Sep 23 Javascript
javascript实现文字跑马灯效果
Jun 18 Javascript
用file标签实现多图文件上传预览
Feb 14 #Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 #Javascript
javascript中BOM基础知识总结
Feb 14 #Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 #Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 #Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 #Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 #Javascript
You might like
php 在线导入mysql大数据程序
2015/06/11 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
门卫人员岗位职责
2013/12/24 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
四年级评语大全
2014/04/21 职场文书
欢迎领导检查标语
2014/06/27 职场文书
三潭印月的导游词
2015/02/12 职场文书
趣味运动会赞词
2015/07/22 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL