Ubuntu上Nginx配置SSL证书

SSL证书

进入腾讯云服务器 - 搜索SSL证书 - 证书管理- 申请免费的SSL证书

审核通过将证书下载到本地解压,解压结果获得5个文件,如下图:

Ubuntu上Nginx配置SSL证书_第1张图片

通过Nginx配置证书,我们只需Nginx文件下的证书文件和私钥文件传到服务器, 并放到Nginx的配置文件路径

  • 1_www.sitven.cn_bundle.crt  证书文件
  • 2_www.sitven.cn.key  私钥文件

配置文件路径:/usr/local/nginx/conf (此处为默认安装目录,请根据实际情况操作)

配置Nginx

编辑 Nginx 根目录下的配置文件nginx.conf 文件。修改内容如下:

注:此操作可通过执行 vim /usr/local/nginx/conf/nginx.conf 命令行编辑该文件。由于版本问题,配置文件可能存在不同的写法

       例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443ssl on

server {
     #SSL 访问端口号为 443
     listen 443 ssl; 
     #填写绑定证书的域名
     server_name www.sitven.cn; 
     #证书文件名称
     ssl_certificate 1_www.sitven.cn_bundle.crt; 
     #私钥文件名称
     ssl_certificate_key 2_www.sitven.cn.key; 
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     location / {
        # 网站主页路径, 此为我博客项目。此路径仅供参考,具体按照实际需求操作
        uwsgi_pass 127.0.0.1:8001;
        include /etc/nginx/uwsgi_params;
     }
 }

配置完成,可通过执行以下命令验证配置文件问题

sudo nginx -t

若存在问题,请您重新配置或者根据提示修改存在问题

比如证书和私钥文件没放到正确的路径, Nginx就会提示没有这样的文件,如下图:

我们根据错误提示将证书与私钥放到正确的路径后重新进行验证

若配置不存在问题,如下图:

我们重启 Nginx,即可使用 https://www.sitven.cn进行访问

HTTP重定向HTTPS

http协议通过80端口通讯的而https协议通过443端口通讯, 所以我们需要做一个重定向, 把80端口的请求重定向到443端口,我们在Nginx配置文件的上一个代码块基础上增加一个server节点提供重定向服务

server {
    listen 80;
    server_name www.你的域名.cn;
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}

如此,我们通过http协议访问网站时会自动重定向到https

反向代理异常处理

1. 因为我的Jenkins也是通过Nginx反向代理的,所有出现https反向代理http静态资源访问无法加载的情况,Jenkins自动化测试结果的html报告无法通过相对路径加载页面静态文件

解决方法:

add_header Content-Security-Policy upgrade-insecure-requests;

只需要在我们要代理的地方加入即可,代理的Jenkins则加入到Jenkins的location中,如下图

Ubuntu上Nginx配置SSL证书_第2张图片

2. 因为个人博客网站博文内容的image全部存在七牛,Nginx配置SSL证书后HTTP重定向到HTTPS,七牛储存空间的image都无法加载

所以,七牛云储存空间外链域名也需配置SSL证书:

进入腾讯云服务器SSL证书-证书管理申请七牛云对象存储空间配置的外链域名所对应的SSL证书

然后进入七牛云-cdn-域名管理-HTTPS配置,配置上传SSL证书

你可能感兴趣的:(Linux)