Nginx配置SSL证书实现https访问

2,451 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

当我们需要使用https进行访问时,需要通过Nginx配置SSL证书,因此第一步我们需要先获取SSL证书

SSL证书获取

SSL证书的获取这里我是使用腾讯云进行获取的,你们也可以从其他途径进行获取。

image-20211024224044992

从腾讯云中SSL证书这里可以申请免费证书,申请完之后进行下载:

image-20211024224133545

下载完之后我们可以看到又一个Nginx文件夹,里面有一个crt后缀的文件和key后缀的文件,这两个文件我们需要放置到你的服务器当中,这里我将这两个文件放在了/usr/local/nginx/conf文件夹当中

修改nginx.conf文件

我们需要将ssl的证书配置及你需要进行转发的路由在nginx.conf文件夹中进行配置

cd /usr/local/nginx/conf
vi nginx.conf

我们需要在nginx.conf http中去添加一个server节点

 server {
    listen 443 ssl;
    server_tokens off;
    keepalive_timeout 5;
    # 配置域名
    server_name www.lirui.site; 
    #填写您的证书文件名称,例如:1_lirui.site_bundle.crt
    ssl_certificate 1_lirui.site_bundle.crt; 
     #填写您的私钥文件名称,例如:2_lirui.site.key
    ssl_certificate_key 2_lirui.site.key;
    ssl_session_timeout 5m;
     # 可参考此 SSL 协议进行配置
    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 / {
           root   /data/dist;
           index  index.html index.htm;
           #配置转发路径
           proxy_pass http://1.15.154.207:80/;
           
        }
        error_page   500 502 503 504  /50x.html;
         location = /50x.html {
            root   html;
        }
   
    }
​

配置好后,我们就可以去重启了

cd /usr/local/nginx/sbin/nginx
./nginx

结果发现重启不了,出现如下错误

nginx:[emerg]unknown directive ssl,就是这个错误提示

这是为什么呢? 我们配置SSL证书是需要引用到nginx中SSL这个模块,当时一开始我们安装的nginx并没有将SSL模块编译进去,所以我们需要对SSL模块进行引用编译,但是不需要我们重启安装nginx,我们只需到你自己当时下载解压的nginx目录下进行操作即可:

#进入nginx实际安装目录,看你自己的实际安装路径
cd /data/mynginx/nginx-12.2
# 引入ssl模块
./configure --with-http_ssl_module
执行make命令
make

在执行完如上命令后,我们会在安装目录中看到一个objs文件夹,里面多出来一个nginx文件

image-20211024230104087

我们将这个nginx文件移到 /usr/local/nginx/sbin中,覆盖里面的nginx文件即可

覆盖完之后我们可以验证一下ssl模块是否引入成功

cd /usr/local/nginx/sbin
./nginx -v

image-20211024230337323

如果出现如上图,则证明ssl模块引入成功,然后重启启动nginx即可,整个ssl证书的配置就大功告成了。