Nginx挂载ssl证书开启HTTPS访问网站

前言

不知小伙伴们在浏览网站时是否有注意到,打开某些网站后,浏览器会在前面加上大大的“不安全”标志,像这样(本文用的是chrome浏览器,其他浏览器中显示的样式可能会有些许不同):
不安全的http
这样既不安全,也不美观,强迫症简直无法忍受。既然这样,那我们为何不给自己的网站开启更美观(事实上也更安全)的https标志呢,说多无用,让我们一起来动手吧!


前期准备

  1. 一个http网站,已经用Nginx做了http负载并且可以正常访问的网站

  2. ssl证书,网上有很多地方可以申请免费的ssl证书,如阿里云。申请到证书后我们下载证书的 (.key和.pem)两个文件备用


操作步骤

  • 把我们上面准备好的两个证书文件拷贝到服务器的某个目录,可以自己创建一个,这个目录和证书文件是一直不能删掉的
  • 修改网站对应的Nginx配置文件
    如:/etc/nginx/nginx.conf (自己找到自己网站对应的配置文件,然后按以下说明进行修改即可)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 添加https server
server{
listen 443 ssl;
# 下面的www.example.com替换成你自己网站的域名(注意这个域名一定要跟ssl证书的域名一致)
server_name www.example.com;
index index.php index.html index.htm default.php default.htm default.html;

#SSL-START 这一段是ssl证书的配置
ssl_certificate /etc/nginx/cert/www.example.com.pem; # 这个目录需要替换成你自己证书的存放目录
ssl_certificate_key /etc/nginx/cert/www.example.com.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;
#SSL-END SSL相关配置

#让http请求重定向到https请求
error_page 497 https://$host$uri?$args;

#下面这些配置跟原本http的server里面的一样就可以了
location / {
}

}
  • 保存配置文件,重启Nginx服务,然后你就可以用 https:// 来访问你自己的网站了

  • 如果你想别人在用http协议访问时,也默认跳转到https协议,可以在修改下配置文件

    1
    2
    3
    4
    5
    6
    7
    #把原来http的server改成下面这样
    #下面www.example.com代表你自己网站的域名
    server {
    listen 80 ;
    server_name www.example.com;
    rewrite ^(.*)$ https://www.example.com$1 permanent;
    }
  • 保存配置文件,重启Nginx服务。现在,即使在打开网页时,输入的是http://xxx ,也会自动跳转到https://xxx


总结

现在,浏览器不会再给你的网站加上大大的不安全标志了,而换成了一把一看就让人很放心的小锁!:laughing::laughing:

本文链接:

https://www.hehuapei.com/nginx-ssl/index.html