Linux下使用Nginx配置SSL证书

本文主要记录Nginx怎么配置SSL证书,前提是Nginx安装成功和SSL证书已经获取。

在我们下载的证书文件中有一个Nginx的文件夹,这里面的两个文件都是需要的。我们需要把这个两个文件上传到 linux 服务器中,推荐放到/etc/ssl/目录下
图片1
图片2
那么我们需要找到 nginx.conf文件并修改,如下图所示
图片3

我们需要在 http 中去添加一个server节点,如下所示。如果你不习惯在linux中修改,把nginx.conf这个下载到本地修改完成再上传也是一样的。
如果用户使用的是http协议进行访问,那么默认打开的端口是80端口,所以我们需要做一个重定向,我们在上一个代码块的基础上增加一个server节点提供重定向服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 #http节点中可以添加多个server节点
server{
#监听443端口
listen 443 ssl;
#对应的域名,把bcniubi.cn改成你们自己的域名就可以了
server_name www.bcniubi.cn bcniubi.cn blog.bceasy.cn;
index index.php index.html index.htm default.php default.htm default.html;
# 前台文件存放文件夹 可改成别的
root /soft/hexo/hexo/hexo.bceasy.cn/public;
ssl off;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}



#从腾讯云获取到的第一个文件的全路径
ssl_certificate /etc/ssl/1_www.bcniubi.cn_bundle.crt;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key /etc/ssl/2_www.bcniubi.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
proxy_pass http://localhost:4000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1000m;
proxy_connect_timeout 1;
#root html;
#index index.html index.htm;
}
}

server{
listen 80;
server_name bcniubi.cn www.bcniubi.cn;
return 301 https://www.bcniubi.cn$request_uri;
}

万事俱备,只欠重启。

/usr/local/nginx/sbin/nginx

结果一重启,duang~出错了。

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

因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。

1:我们先来到当初下载nginx的包压缩的解压目录。(我的目录是/soft/nginx-1.10.2)
2:来到解压目录下后,按顺序执行一下命令:

1
2
cd /soft/nginx-1.10.2 //这个命令是进入下载解压的 nginx 文件夹,看你的实际路径
./configure --with-http_ssl_module

重新添加这个ssl模块

注: 执行以上一条命令出现这个错误(./configure:错误:SSL模块需要OpenSSL库。),原因是因为缺少了OpenSSL,那我们再来安装一个即可执行:yum -y install openssl openssl-devel 等待OpenSSL的安装完成后,再执行./configure

3:执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。

make

4:在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。

1
2
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak //备份,备份则不用执行
cp objs/nginx /usr/local/nginx/sbin/nginx

出现错误,删除掉/usr/local/nginx/sbin/下的 nginx 再复制过去即可

5:最后我们来到Nginx安装目录下,来查看是否有安装ssl模块成功。执行

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

即可看到如下图:
图片4
最后如果出现如上图,则SSL模块添加到Nginx的编译好了,这次重新启动则OK了。(安全组,端口必须手动开放,确保开放了443端口 )
图片5