1. 配置nginx.conf文件
一般情况下 Nginx的安装目录为:/usr/local/nginx
。
在终端输入vim /usr/local/nginx/conf/nginx.conf
对nginx.conf文件进行修改。
一般在文件末端有被注释掉的配置内容,未修改前内容如下:
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
修改项为:
- server_name 设置绑定的域名
- ssl_certificate 证书
- ssl_certificate_key 证书的私钥
- ssl_protocols 使用的协议
- ssl_ciphers 配置加密套件,写法遵循 openssl 标准
这里直接将.crt证书文件和.key私钥文件放在/usr/local/nginx/conf/
文件夹,配置好的示范如下:
server {
listen 443 ssl;
server_name www.XXXXX.cn;
ssl_certificate 1_www.XXXXX.cn_bundle.crt;
ssl_certificate_key 2_www.XXXXX.cn.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
2. 重启报错:缺少http_ssl_module模块
这是由于在最开始编译nginx时,没有加入http_ssl_module模块的原因导致的。
解决方案:重新编译一次nginx,并把http_ssl_module模块加上去。
- 如果出现这个问题,一般情况下也可能没有安装openssl和openssl-devel模块。请安装这两个模块:
yum install openssl
yum install openssl-devel
1. 检查当前nginx配置了什么模块
$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.13.8
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
configure arguments:
这个参数后面就是上次编译的配置内容,接下的重新编译要带上!(这个的示范已经带了http_ssl_module模块了,请忽略它!)
2. 找到nginx安装包的目录重新编译nginx
找到nginx安装包的目录(请祈祷你之前没有还没有删掉安装包并还记得它的目录!)。
.$ /configure --原来有的模块(如果有的话) --with-http_ssl_module
记得加上步骤1找到的上次编译配置的模块。
然后再编译
$ make
3. 将新生成的nginx替换掉旧的
经过步骤2,会在安装包目下的objs
文件里面生成一个新的nginx文件。将这个nginx文件替换掉/usr/local/nginx/sbin/
文件夹里面的。
$ rm /usr/local/nginx/sbin/nginx # 删掉旧的
¥ mv ./objs/nginx /user/local/nginx/sbin/ # 在安装包目录下 将objs文件夹里面新的nginx文件移动到/usr/local/nginx/sbin/目录下
4. 重启nginx
$ /usr/local/nginx/sbin/nginx -s reload
3. http 自动跳转 https (可选)
这时候的网站既可以使用http://
请求,也可以使用https://
请求。
如果想将所有的http请求自动跳转为https请求,在/usr/local/nginx/conf/nginx.conf
添加rewrite ^(.*) https://$host$1 permanent;
网友评论