环境配置:linux + docker + nginx1.9.8
第一步:
由于环境部署在docker里面,所以先进入docker
docker ps 展示出所有的docker镜像,docker exec -it 镜像名 bin/bash 进入镜像 (这里是重点,没有docker的忽略)
找到nginx的域名配置文件,我的目录是/etc/nginx/conf.d/xxx.conf
ssl_certificate /usr/local/src/ssl/xxxx.pem; #证书里面,必须是包含两套完整的-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----
ssl_certificate_key /usr/local/src/ssl/xxxx.key; #证书密钥文件
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;
以上两个xxx.pem 和 xxx.key 需要申请 (我的机器是在阿里云上的,可以直接在阿里云申请)
第二步:
重启nginx:nginx -s reload
这时候报错:unknown directive “ssl_certificate” 这是由于nginx的ssl模块未安装,这里我们需要重新编译下nginx
-
我们先来到当初下载nginx的包压缩的解压目录,如果你是看小编写的教程安装的,解压目录应该在“/usr/loacl/src/”,绝大多数应该都是在这个目录下的,已经是一种规范了。
-
来到解压目录下后,按顺序执行一下命令:
-
命令1 ./configure --with-http_ssl_module //重新添加这个ssl模块
-
注意如果没有出现错误,则直接看命令2即可
-
执行以上一条命令出现这个错误(./configure:错误:SSL模块需要OpenSSL库。),原因是因为缺少了OpenSSL,那我们再来安装一个即可执行:yum -y install openssl openssl-devel
-
等待OpenSSL的安装完成后,再执行./configure ,最后在执行” 命令1" 即可。
-
命令2 执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。
-
命令3 在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/nginx
-
命令4,最后我们来到Nginx安装目录下,来查看是否有安装ssl模块成功。执行./sbin/nginx -V即可看到如下图:
10. 记得 再次重启nginx
第三步:
这个时候发现https还是没有生效,原因是 上述修改是在docker里面的nginx,所以只支持docker里面访问,所以我们还需要在linux上(docker外面)修改,找到**/etc/nginx/conf.d/vhost/xxx.conf**
同样的还是要增加ssl相关配置,请看第一步
同时也要加上如下代码块,8081是docker里面nginx开放的端口
location / {
proxy_pass http://127.0.0.1:8081;
}