Nginx配置HTTPS
707
2019-05-16
环境说明
- 系统:Linux | CentOS 7.4
- Nginx:版本 1.8.1
- Nginx 通过编译安装到
/usr/local/nginx
下
配置过程(踩坑)
修改nginx.conf
配置
在 Nginx 配置文件 nginx.conf
中追加如下配置,保存:
server {
listen 443;
server_name wechat.zhongcaile.net;
ssl on;
ssl_certificate /root/server/ssl/wechat/XXXXXX.crt;
ssl_certificate_key /root/server/ssl/wechat/XXXXXX.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://XXX.XXX.XXX.XXX:80;
proxy_set_header Host $host;
}
}
使用命令/usr/local/nginx/sbin/nginx -s reload
让 Nginx 重新加载配置。
呃 ... ... 问题来了,在重载配置时 Nginx 报出错误:unknown directive "ssl" in XXX
解决问题
经查,是在编译安装 Nginx 时没有加入 SSL 支持参数的原因。
可以使用命令 /usr/local/nginx -V
查看配置参数中是否添加 SSL 支持。
支持的查询结果(注意最后一行)
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
不支持的查询结果
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
configure arguments: --prefix=/usr/local/nginx
如果是这样,那么就需要重新配置编译 Nginx,步骤如下。
- 在nginx的安装目录执行命令,添加配置;
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
- 在nginx的安装目录执行命令
make
; - 【重中之重】不要执行
make install
命令,否则会意想不到的事情发生。 make
之后,将编译得到的结果nginx
文件cp
到/usr/local/nginx/sbin
目录下(注意备份之前的老版本哟,以备不时之需)- 假如一切正常的话,进行上述步骤之后,再来执行
nginx -s reload
应该就没有问题了。
👆为什么是“假如”?
因为不会那么顺利的,呵呵!
比较不幸的时候,在执行上面步骤时./configure
第一步,就会发生错误,错误信息如下:
SSL modules require the OpenSSL library.
解决问题
这时需要在系统安装 openssl 支持,执行以下命令。
yum -y install openssl openssl-devel
安装完成后,再操作上面的步骤,就OK啦。
注意
由于博客程序问题,文章中“=”等于符号问中文字符,执行命令时请替换后使用。
参考
- 0
- 0
-
分享