美文网首页
阿里云+nginx配置http升级https(ssl)实践

阿里云+nginx配置http升级https(ssl)实践

作者: 辉夜真是太可爱啦 | 来源:发表于2020-02-24 21:38 被阅读0次
    主要记录下如何将域名从http升级到https,服务器的系统是Linux

    1.购买ssl证书

    • 前言:本人服务器和域名都是阿里云买的,所以ssl证书也是直接从阿里云购买,个人开发者免费,每次只能买一年,具体登录阿里云搜索ssl即可购买,购买了以后填写信息完成校验即可

    image.png

    2.下载证书

    • 填完信息提交成功之后,等待个几分钟,看到证书是已签发状态就可以直接点击最右侧的下载啦,选择nginx的配置

    image.png
    • 下载下来以后就是一个压缩包,共有一个.pem结尾和一个.key结尾的文件。

    3.配置CA证书

    • 这里默认你已经安装好了nginx,接下来就是配置CA证书,首先在nginx/conf目录下,新建cert文件夹,将刚刚下载的两个文件放入其中

    • 然后找到nginx/conf目录下的nginx.conf文件,找到# HTTPS server这一行,将下面的serve根据你的实际使用需要进行修改

    # 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
    server {
    listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    server_name localhost;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
    root html;     #改为你的项目访问地址
    index index.html index.htm;
    ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cert/domain name.key;   #将domain name.key替换成您证书的密钥文件名。
    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;   
    location / {
    root html;   #站点目录。
    index index.html index.htm;   
    }
    }                     
    
    • 设置http默认跳转https
    server {
     listen 80;
     server_name localhost;   #将localhost修改为您证书绑定的域名,例如:www.example.com。
     rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
     location / {
       index index.html index.htm;
    }
    }
    
    • 然后保存nginx.conf的文件配置,nginx -s reload重启nginx服务配置

    4.遇到[emerg] the "ssl" parameter requires ngx_http_ssl_module的解决办法(主要分为两个,一个nginx/sbin目录为安装好之后的nginx目录下的sbin文件夹内,nginx源码包即nginx-1.9.9文件夹下,当然,每个人的版本可能不一样)

    • 但是在重启的时候遇到了一个报错[emerg] the "ssl" parameter requires ngx_http_ssl_module ,查了下原因,其实也挺简单,因为nginx没有安装ssl模块

    • 在nginx/sbin目录下运行./nginx -V,查看到configure arguments的原有配置为--prefix=/usr/local/nginx,将你获得的原有配置后面加上--with-http_ssl_module,即可

    • 例如我,切换到源码包的位置,进行添加模块的配置./configure --prefix=/usr/local/nginx --with-http_ssl_module

    • 配置完成以后运行make,不建议make install覆盖安装

    • 然后将原本安装好的nginx进行备份,cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

    • 先将之前写的ssl配置注释,然后跑到nginx/sbin目录下,./nginx -s stop,先关闭nginx(切记,要先关闭nginx运行再覆盖,不然会提示文件正忙)

    • 去源码包的位置,cp ./objs/nginx /usr/local/nginx/sbin/,将原本的文件进行覆盖,会询问你是否覆盖,输入一个y敲回车即可

    • 跑到nginx/sbin目录下,./nginx -V查看是否已经添加了ssl模块,如果看到configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module即表示配置完成

    • 遇到nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed的解决办法

    • 在nginx/sbin目录下运行./nginx,然后发现报错了,报错信息为/usr/local/nginx/logs/nginx.pid,解决办法是运行代码/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf,然后在运行重启./nginx -s reload即可,最终完成了https的升级!

    相关文章

      网友评论

          本文标题:阿里云+nginx配置http升级https(ssl)实践

          本文链接:https://www.haomeiwen.com/subject/bkbiqhtx.html