买了一个域名,一个 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. 输入以下内容
    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 申请的免费证书,是有有效期的,当证书过期时,重新来一遍申请流程即可