买了一个域名,一个 VPS,安装好 Nginx,配置了一个博客,或者一个Web服务。在Chrome中访问后,地址栏 不安全 三个字,很是让人不舒服。今天这篇博客,就记录一下如何配置 Nginx 的 HTTPS 重定向。整个过程很简单,一共有三步,域名配置,HTTPS 证书申请,配置 Nginx,下面将详细说明。

域名配置

首先,将自己的域名配置A记录,指向自己的服务器。并且在服务器上装好 Nginx。
安装 Nginx 使用命令 apt-get install nginx

HTTPS 证书申请

  1. Ping 一下自己的域名,确定域名已经被解析到自己的VPS。
  2. 执行命令 apt-get install letsencrypt 安装 letsencrypt
  3. 执行命令 service nginx stop 先将 Nginx 停掉
  4. 执行命令 letsencrypt certonly --standalone 进行获取证书流程,根据提示,输入信息,域名,邮箱等
  5. 获取证书流程结束后,会生成两个文件,在接下来的的 Nginx 配置中会用到
    /etc/letsencrypt/live/imoegirl.com/fullchain.pem
    /etc/letsencrypt/live/imoegirl.com/privkey.pem
    上面的 imoegirl.com 只是举例,这里是你输入的域名

Nginx 配置

  1. 执行命令 cd /etc/nginx/conf.d
  2. 使用你喜欢的编辑器创建并编辑文件 my.conf (命名无所谓,只要扩展名是.conf)
  3. 输入以下内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    server {
    listen 80;
    listen [::]:80;
    server_name imoegirl.com;
    return 301 https://imoegirl.com$request_uri;
    }

    server {
    listen 443 ssl http2;
    server_name imoegirl.com;
    ssl_certificate /etc/letsencrypt/live/imoegirl.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/imoegirl.com/privkey.pem;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    keepalive_timeout 70;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL协议

    location / {
    root /var/www/blog; # 这里是网站所在的目录,可以改成自己想要的
    index index.html index.htm;
    }
    }
  4. 执行命令 service nginx start 启动 Nginx

经过上面的配置,当我们访问 http://imoegirl.com 时,会自动被重定向到 https://imoegirl.com

注意:我们在 letsencrypt 申请的免费证书,是有有效期的,当证书过期时,重新来一遍申请流程即可