Nginx配置SSL证书

2018-12-07  本文已影响0人  LuckyBugGo

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 {
        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模块加上去。

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;

上一篇下一篇

猜你喜欢

热点阅读