概述:本文主要介绍这些内容: DNS 泛域名解析SSL 泛域名证书申请CDN 泛域名加速(分发)。
前置:本文中 DNS 服务商为 DNSPod ,SSL 证书由 Let’s Encrypt 颁发,CDN 则是使用 腾讯云 CDN
环境:基础的操作环境:主机: CentOS 7.4 、服务器: Nginx 、其他:acme.sh
附录:介绍 CentOS 的 Nginx 安装和配置。

一、DNS 域名解析

谈及 DNS 解析,一般有这几点要素:主机记录记录类型线路类型记录值TTL

  • 主机记录(@, *,xxx 假设根域名: domain.com
主机记录解释解析后网址
@直接对主域名解析domain.com
*泛域名解析,匹配所有二级域名*.domain.com
www对二级域名为 www 的网址解析www.domain.com
xxx对二级域名为 xxx 的网址解析xxx.domain.com
  • 记录类型 (A,CNAME,TXT,NS,显性 URL ,隐性 URL

A 记录:解析到具体的 服务器 IP 地址CNAME :解析到另一域名(比如 CDN 的加速域名),通过另一域名获取服务器 IP 地址

显性 URL 则是使用 301 跳转 重定向 域名,而 隐性URL 本质上只是一个 嵌套 iframe (一个是 DNS 服务器做重定向,一个是 DNS 服务器套一个网页)。NS 则是用来换 DNS 服务商时使用。

二、SSL 泛域名证书申请

支持 免费 泛域名证书申请的只有 Let’s Encrypt 了。

有兴趣可以去其官网看看,每次申请可以获取三个月证书时间,所以此处借助工具:acme.sh

安装方法也非常简单,见其中文帮助文档:acme.sh-说明 ,在本文中简单的记录一下:

(1)安装 acme.sh

curl https://cdn.jsdelivr.net/gh/Neilpang/acme.sh/acme.sh | INSTALLONLINE=1  sh

(2)生成证书:DNS 方式

需要先登录 dnspod 获取 API 的 ID 和 Key 。

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_dp -d domain.com -d *.domain.com

(3)安装证书

acme.sh --installcert -d domain.com \
--key-file /etc/pki/nginx/domain.key \
--fullchain-file /etc/pki/nginx/fullchain.cer \
--reloadcmd "service nginx force-reload"

(4)更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作。

(5)自动更新 acme.sh

acme.sh --upgrade --auto-upgrade

三、CDN 泛域名分发

这里使用的是腾讯云的 CDN (阿里云也是可以的),前置条件:备案 + 验证

除了需要验证外,其余的添加方法与普通 CDN 域名加速的设置项均相同。但是有一点需要注意:

全站 Https,泛域名的 SSL 证书 必须要部署到 CDN 上,否则 CDN 会用腾讯云的证书然后就证书不符报错啦。

四、附录

(1)CentOS 配置 Nginx

1.安装 Nginx

yum install -y nginx

2.启动 Nginx

systemctl start nginx.service

3.设为开机自启

systemctl enable nginx.service

4.Nginx 配置信息

  • 网站文件存放默认目录:/usr/share/nginx/html
  • 网站默认站点配置文件:/etc/nginx/conf.d/default.conf
  • 自定义站点配置文件:/etc/nginx/conf.d/
  • 全局配置文件:/etc/nginx/nginx.conf

(2)Nginx 配置 Http 跳转 Https

均修改全局配置文件 nginx.conf

1.开启 443 监听

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name inkss.cn;
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/nginx/fullchain.cer";
ssl_certificate_key "/etc/pki/nginx/inkss.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}

2.Http 跳转 Https

在监听 80 的函数内添加 rewrite ^(.*)$ https://$host$1 permanent;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name inkss.cn;
root /var/www/html;
rewrite ^(.*)$ https://$host$1 permanent;
...
}

评论