
背景
开发微信小程序,需要https域名,因此使用Nginx的SSL模块配置https
步骤
一、去域名管理商(如腾讯云、阿里云等)申请CA证书
二、在Nginx中配置,一般情况下域名管理商会提供配置文档
1、把证书和密钥上传到服务器中(所在位置和nginx.conf配置中一致,这里我直接放在nginx.conf同一目录下)
2、配置nginx.conf,如下所示:
server {
#https默认地址端口443
listen 443 ssl;
#域名
server_name xx.xxx.com;
#证书名
ssl_certificate xxxxxx.crt;
#密钥
ssl_certificate_key xxxxxx.key;
#session缓存
ssl_session_cache shared:SSL:1m;
#session有效期
ssl_session_timeout 30m;
#加密协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#加密算法
ssl_ciphers HIGH:!aNULL:!MD5;
#服务器端选择算法
ssl_prefer_server_ciphers on;
#此处根据自己的系统配置
location / {
root html; index index.html index.htm;
}
}
三、重载nginx(nginx -s reload),然后访问配置的域名验证https的配置。
错误
本人nginx安装目录为:/usr/local/nginx
配置后,重载nginx报如下错误:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/nginx.conf:371
此错误是因为nginx未安装SSL模块,需要安装配置SSL模块
通过/usr/local/nginx下的configure 配置SSL模块和其他模块信息,此处需要特别注意,这个方式不是增量添加模块的,会覆盖原来的配置的,所以需要把原来的配置也加在一起
1、通过nginx -V查看现在配置,然后关闭nginx(nginx -s stop)
2、执行./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_ssl_module,其中--with-http_ssl_module为SSL模块的配置
3、执行make命令编译
4、执行完成后会在/usr/local/nginx/objs目录下生成nginx命令
5、备份/usr/local/nginx/sbin目录下的nginx命名,然后复制objs目录下的nginx到sbin目录下(cp objs/nginx sbin/ ,如果不能复制,可以使用cp -rpf objs/nginx sbin/ 强制复制 )
6、启动nginx完成SSL模块的配置