将博客放在自己的VPS上,免不了配置 nginx 及 https,如果不配置 https,浏览器上**不安全**那三个字,实在是太刺眼。所以这篇博客,将记录整个折腾过程。

  • nginx 的安装
  • https 的证书配置
  • http 重定向到 https
  • www 重定向到非不带 www 的域名

接下来的操作,都是在 Ubuntu 18.04 版本上进行的。

域名解析的配置

首先要先自己的域名解析到自己的 VPS,需要配置两条A记录,一条是 @,一条是 www,都是指向自己的 VPS IP。

安装 nginx

apt install nginx

申请 ssl 证书

这里,我们使用腾讯云免费的证书,访问 https://console.qcloud.com/ssl,然后点击页面上的 申请免费证书,然后填写信息,注意在域名身份认证时,选择 手动DNS验证,然后点击确认申请,根据给出的提示,在自己的域名上配置TXT解析,等待一段时间,解析成功后,下载证书。

下载下来的是一个压缩包,里面有一个 Nginx 目录,这个目录里有两个文件,xxx.crtxxx.key。需要将这两个文件上传到自己的 VPS。放在 /etc/nginx/ssl 这个目录下,如果 ssl 这个目录不存在,就使用命令 mkdir /etc/nginx/ssl 创建目录。

创建网站资源目录

首先创建我们的网站资源目录,假设我们放在 /var/www/imoegirl.com 这个目录下。注意 imoegirl.com 是一个目录,如果不存在,就先使用 mkdir 创建。imoegirl.com 可以换其他名字。

为了测试,我们在 imoegirl.com 这个目录下新建一个 index.html,内容如下

<h1>Hello iMoegirl</h1>

配置 nginx

接下来就是配置 nginx,按下面的步骤进行

  1. 删除默认的配置文件 rm /etc/nginx/sites-enabled/default
  2. 创建我们自己的配置文件,imoegirl.com 可以换成自己的名字,但是必须以 .conf 结尾 vim /etc/nginx/conf.d/imoegirl.com.conf
  3. imoegirl.com.conf 的内容如下,注意将代码中 https://imoegirl.com 换成自己的域名
# 下面这段,是将 http 重定向到 https,不管带不带 www
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://imoegirl.com$request_uri;
}

# 下面这一段,是处理带 www 的域名
# 最后会重定向到 不带 www 域名
server {
    listen 443 ssl http2;
    server_name www.imoegirl.com;
    ssl_certificate /etc/nginx/ssl/imoegirl.com.crt;
    ssl_certificate_key /etc/nginx/ssl/imoegirl.com.key;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    keepalive_timeout 70;
    root /var/www/imoegirl.com;
    index index.html index.htm index.nginx-debian.html;
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
    return 301 https://imoegirl.com$request_uri;
}

# 下面这一段,是处理不带 www 的域名,也就是最终我们想要的
server {
    listen 443 ssl http2;
    server_name imoegirl.com;
    ssl_certificate /etc/nginx/ssl/imoegirl.com.crt;
    ssl_certificate_key /etc/nginx/ssl/imoegirl.com.key;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    keepalive_timeout 70;
    root /var/www/imoegirl.com;
    index index.html index.htm index.nginx-debian.html;
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}

上面的代码,注意几个地方

  1. imoegirl.com 都需要换成自己的域名
  2. ssl_certificate 换成自己的证书文件路径
  3. ssl_certificate_key 换成自己的 key 文件路径
  4. root 后面跟的是自己的网站资源路径

重启 nginx

service nginx restart

所有配置结束,可以访问自己的域名测试一下。