微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx配置SSL证书

前言

前面的几篇文章介绍了如何在centos中安装Nginx以及如何部署前端应用,如何代理后端的API解决前端请求跨域的问题,今天介绍如何使用SSL证书保护我们的应用。

准备

  1. 拥有一台可以被自己支配的电脑(记得插上网线)
  2. 拥有属于自己的域名(20块钱一年的那种)
  3. 拥有属于自己的服务器(双十一拿3杯拿铁去腾讯云或阿里云兑换一年的那种再合适不过了)
  4. 最后一点也是最重要的一点:可以支配自己勤劳的双手

如何获取SSL证书

  1. 测试服务器在国内的云服务商的话都有一定的免费试用申领次数(如腾讯云、阿里云、百度云等)。
  2. 如果达到次数了可以选择Let’s Encrypt之类的证书也可以(当然也有很多其他的)。
    说明:有实力的当然可以选择商用的

部署SSL证书到Nginx

以下我们使用www.xxx.com单域名证书使用方式为例,按照惯例配置极简模式下的SSL配置(请注意SSL使用443端口):

server {
    #SSL使用443端口
    listen 443 ssl;
    
    #SSL证书绑定的单域名
    server_name www.xxx.com;
    
    #证书pem文件
    ssl_certificate /usr/cert/www_xxx_com.pem;
    
    #证书key文件
    ssl_certificate_key /usr/cert/www_xxx_com.key;
    
    #缓存SSL握手产生的参数和加密密钥的时长
    ssl_session_timeout 5m;
    
    #使用的加密套件的类型
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    
    #表示使用的TLS协议的类型
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
    #加密套件优先选择服务器的加密套件
    ssl_prefer_server_ciphers on; 
    
    #spa应用配置
    location / {
       root /var/www/mainApp; ###配置主应用的文件夹
       index index.html index.htm;
       try_files $uri $uri/ /index.html;
    }
}

以上配置成功后执行 Nginx -s reload 后即可通过 https://www.xxx.com 访问了

注意:一定要使用https协议访问哦(这里我们没有配置http协议的站点)!!!

www.xxx.com的证书只能用于 www.xxx.com 的绑定,如果有 shop.xxx.com 的二级域名需要再申请一个 shop.xxx.com单域名证书,或者申请 泛域名证书

如何做到HTTP和HTTPS都可以访问

上面将站点的端口从 80 修改443 后,我们虽然可以通过 https://www.xxx.com 访问网站,但是当我们使用 http://www.xxx.com 访问的时候却发现无法进入网站,下面我们将新增 http 协议访问的配置:

#HTTP协议访问的配置
server {
    #http使用80端口
    listen 80;
    
    #解析的单域名
    server_name www.xxx.com;

    #spa应用配置
    location / {
        root /var/www/mainApp; #配置应用的文件夹
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}

#HTTPS使用SSL访问的配置
server {
    #SSL使用443端口
    listen 443 ssl;
    
    #SSL证书绑定的单域名
    server_name www.xxx.com;
    
    #证书pem文件
    ssl_certificate /usr/cert/www_xxx_com.pem;
    
    #证书key文件
    ssl_certificate_key /usr/cert/www_xxx_com.key;
    
    #缓存SSL握手产生的参数和加密密钥的时长
    ssl_session_timeout 5m;
    
    #使用的加密套件的类型
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    
    #表示使用的TLS协议的类型
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
    #加密套件优先选择服务器的加密套件
    ssl_prefer_server_ciphers on; 
    
    #spa应用配置
    location / {
       root /var/www/mainApp; #配置应用的文件夹
       index index.html index.htm;
       try_files $uri $uri/ /index.html;
    }
}

以上配置成功后执行 Nginx -s reload 后即可通过 http://www.xxx.comhttps://www.xxx.com 访问了

下一篇介绍如何强制使用 https 协议访问网站,即:将所有 HTTP 的请求转发到 HTTPS

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐