去评论
海欣资源

如何在Nginx中配置SSL证书

pollf
2022/04/21 14:53:53
1,部署Nginx:centOS7中使用Nginx部署静态网页
2,最终得到一个 .key 文件和 一个 .pem 文件:



3. 查看配置文件路径;
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
4. 创建证书相关文件夹
mkdir /etc/nginx/cert // 最好放在nginx文件夹里面
5. 上传证书到服务器
可以使用 ssl 命令行来上传证书,但是这里使用 ftp 软件来进行上传,交互体验更好,直接拖进去就可以了:


6. 添加 SSL 配置
此时可以通过 vim 指令修改上一步中的 nginx.conf 文件,但是这样体验不好,可以下载文件之后本地使用 ide 或者文本编辑器进行修改,这里使用的是 VSCode:
server {
    listen 443 ssl; // 这里是新的写法
    server_name your-domain.com; // 你的域名
    # ssl on; // 这种已经不使用了,这么写会报警告,可以直接去掉采用第一行的写法
    root /xxx/xxx/html; // 前台文件存放文件夹,一般使用 Nginx 初始化的文件夹,当然也可以自己修改
    index index.html;// 上面配置的文件夹里面的index.html
    ssl_certificate  /xxx/cert/214292799730473.pem;// 改成你的证书的名字
    ssl_certificate_key /xxx/cert/214292799730473.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 / {
        index index.html index.htm;
    }
}
server {
    listen 80;
    server_name your-domain.com;// 你的域名
    rewrite ^(.*)$ https://$host:443$1 permanent;// 把http的域名请求转成https且转发到443端口
}
注意,一般而言,Ngnix 服务会有默认的 80 端口来接收 http 请求,所以上述的 80 端口配置中的 rewrite 需要直接添加到原配置上,否则前面的配置优先级更高,后面的 80 配置就无法生效了:




原配置中添加rewrite

重定向http到https
6. 上传配置文件

上传配置文件
7. 验证配置文件
上述的代码不能直接复制,会报错,因为无法识别双引号 //,conf 里面的注释是要用 # 来写的;
仍然使用第一步中的指令验证 conf:
nginx -t

8. 重新加载配置文件
nginx -s reload