免费购买SSL证书,nginx无缝升级https

386 阅读3分钟

最近在升级交流学习社区,觉得有必要升级成https.以下是自己在升级中记录。

以下包括以下部分:

一、阿里云免费购买SSL证书

1、自己在阿里云申请了免费的,然后自己支付0元,购买了SSL证书

2、我选择DNS验证

3、在SSL证书中,下载cert证书,然后放到nginx服务器上

二、nginx无缝升级https

4、查看nginx是否支持ssl

5、配置ssl模块

6、重新编译一下

7、因为这次是升级nginx,所以不需要执行 make install,首先备份原nginx执行脚本

8、把新编译的nginx执行脚本拷贝到相应的目录下:’

9、最后进行平滑升级

10、再次检查nginx是否有https模块

11、展示一下https网站站点,www.mwcxs.top/

附注1:nginx配置SSL报错问题,ssl on报错

附注2:nginx的https服务配置


1、自己在阿里云申请了免费的,然后自己支付0元,购买了SSL证书

2、我选择DNS验证,因为域名是自己的。

DNS验证方式一般需要由您的域名管理人员进行相关操作。请按照您的证书订单中的进度提示,在您的域名管理系统中进行相应配置。

选择DNS域名授权验证方式,您需要到您的域名解析服务商(如万网、新网、DNSPod等)提供的系统中进行配置。例如,您的域名托管在阿里云,则需要到云解析DNS控制台进行相关配置。
生成之后的域名验证,在域名解析管理可以看到。

3、在SSL证书中,下载cert证书,然后放到nginx服务器上

4、查看nginx是否支持ssl:

./nginx -V

查看 configure arguments 信息中是否包含 -with-http_ssl_module 字样

5、配置ssl模块

找到之前安装 Nginx 时的解压目录,配置ssl模块:

./configure --with-http_ssl_module

6、重新编译一下

在解压目录执行make

make

7、因为这次是升级nginx,所以不需要执行 make install,首先备份原nginx执行脚本:

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

8、把新编译的nginx执行脚本拷贝到相应的目录下:

cd objs
cp nginx /usr/local/nginx/sbin/

9、最后进行平滑升级

cd ..
make upgrade

10、再次检查nginx是否有https模块

11、展示一下https网站站点,www.mwcxs.top/

附注1:nginx配置SSL报错问题,ssl on报错

启动报错(错误信息:nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /home/soft/nginx/conf/nginx.conf:76)

需要配置模块ssl模块 --with-http_ssl_modul,请查看本文的第二部分:2、配置ssl模块

附注2:nginx的https服务配置

      # HTTPS server
    
    server {
        listen 443;
        server_name www.mwcxs.top;

        ssl on;
        root /home/nodejs/liblog/www;
        index index.js index.html index.htm;
        
        ssl_certificate      /usr/local/nginx/cert/15420110408020120565539868.crt;
        ssl_certificate_key  /usr/local/nginx/cert/15420110408020120565539868.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;

        if ( -f $request_filename/index.html ){
            rewrite (.*) $1/index.html break;
        }
        if ( !-f $request_filename ){
            rewrite (.*) /index.js;
        }
        location / {
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_pass http://learning_community_node$request_uri;
            proxy_redirect off;
        }

        location = /production.js {
            deny all;
        }

        location = /testing.js {
            deny all;
        }

        location ~ /static/ {
            etag         on;
            expires      max;
        }
        
    }


    server {
        listen 80;
        server_name www.mwcxs.top mwcxs.top;
        return  301 https://$server_name$request_uri;
    }
注:return 301 https://$server_name$request_uri;用来把http转换成https。

欢迎关注:https://github.com/saucxs/nodeJSBlog ,欢迎fork和start