唠唠闲话

域名相关知识与操作。


域名相关

域名注册

  1. 关于域名,以 www.wzhecnu.cn 为例,分三段理解

    • .cn 称为顶级域名或一级域名,象征网站属性。比如最常见的 .comcompany 的缩写;.orgorganization 的缩写;.cn 代表国内域名。
    • wzhecnu.cn 称为二级域名,由个人注册,相当于身份 ID,需购买和注册。
    • www 为三级域名,可自由设置,数目不限,比如 test.wzhecnu.cn
  2. 域名注册有许多平台可选,比如万网的阿里云域名
    20211119215405

  3. 第一次购买域名需要实名认证,按流程走,之后购买新域名直接选择已认证的信息。

  4. 域名购买后,进入控制台,查看域名列表。

域名备案

  1. 购买域名后,建议备案,否则国内使用不方便,比如:
  • 网站被微信屏蔽时,申诉要用备案号
  • 在七牛云设置个人域名作外链,要求域名经过备案
  1. 当然,如果只是简单的学习记录,不考虑分享之类的问题,不备案影响不大。
  2. 域名备案要先购买服务器,然后在服务器所在平台备案。
  3. 初次备案,可能觉得流程繁琐;最近第二次备案,熟悉了也就几步操作。
  4. 主域名和 www 域名必须解析到备案所在服务器,如果要解析到其他服务器,可以再做“接入备案”。

域名解析

域名解析是把域名指向网站空间IP,让人们可以通过注册的域名方便地访问到网站的一种服务。以阿里云添加域名解析的方法为例:

  1. 进入控制台,点击域名右侧的解析
    20211119221412

  2. 点击添加记录
    深度截图_选择区域_20211119223725

几点说明:

  • 主机记录填 @ 代表主域名解析地址,即 wzhecnu.cn 指向的地址
  • 主机记录填其他代表二级域名,比如 www 代表 www.wzhecnu.cn
  • 记录类型填 A 记录,则记录值填写 IP 地址
  • 记录类型填 CNAME,则记录值填写域名地址

ssl 协议

http 访问网站左上角会出现感叹号提醒,解决方法是添加 ssl 证书,改用 https 访问
20211004130722

参考文章
阿里云:在 Nginx 独立服务器上安装证书
CSDN:ubuntu nginx 配置 https 服务器

证书申请

  1. 提供免费 ssl 证书申请的平台有很多,以阿里云为例,申请方法点这里。申请规则可能会变动,我申请时有 20 个免费证书,有效期一年。

  2. 域名控制台,点击创建证书
    深度截图_选择区域_20211202210156

  3. 选择证书,点击立即申请
    深度截图_选择区域_20211202210839

  4. 在弹出窗口中,填写相应信息,单击下一步
    深度截图_选择区域_20211202210938

  5. 按要求添加域名解析记录,验证通过后点击提交审核,如果域名阿里云,添加解析这步可以省略
    20211202211211

  6. 审核通过后,点击下载证书,下载 Nginx 文件,并解压
    深度截图_选择区域_20211202211842

证书配置

  1. 将文件上传到服务器的 /etc/nginx/cert 目录(先上传到用户目录,比如 ~/Download/ ,再命令行移动)

  2. 编辑 Nginx 的 default 文件

    1
    sudo vim /etc/nginx/sites-available/default

    或者直接下载到本地,修改后再上传(推荐!)

  3. default 文件中增加端口 443

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    server {
    listen 443 ssl;
    server_name xxx.xxx.com; # 将 xxx.xxx.com 替换成证书绑定的域名。
    root html;
    index index.html index.htm;
    ssl_certificate cert/cert-file-name.pem; # 需要将 cert-file-name.pem 替换成已上传的证书文件的名称。
    ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.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;
    location / {
    root /var/www/hexo; # 站点目录
    index index.html index.htm;
    }
    }

    这里加注释 # 的部分都要改自己的,如果多个域名就复制多段。

  4. 强制 https:在 80 端口中,添加一行 rewrite,比如

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    server {
    listen 80;
    server_name www.wzhecnu.cn;
    root /var/www/hexo;
    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    rewrite ^(.*)$ https://$host$1; # 将所有 HTTP 请求通过 rewrite 指令重定向到 HTTPS。
    location / {
    index index.html index.htm;
    }
    }

    server_name 参数填自己的域名,如果有多个域名用空格隔开

  5. 域名重定向,将主域名重定向到 www 域名,参考这里

    1
    2
    3
    4
    5
    server { 
    listen 80;
    server_name wzhecnu.cn;
    return 301 https://www.wzhecnu.cn$request_uri;
    }
  6. 重启 Nginx 服务,使得改动生效。

    1
    sudo service nginx restart

    注:如果重启提示如下错误,可能是语法错误,比如漏了 ;
    深度截图_选择区域_20211202222540

注:关于 Nginx 及相关语法,有需要再深入了解和学习。