跳转至

域名解析方法

user:

  • 我现在在github上有多个page项目,比如 dancehole.github.io/dancehole dancehole.github.io/a dancehole.github.io/b dancehole.github.io/c

现在我希望把每一个项目都映射到下面的格式:

assistant:

user:

  • 我现在在github上有多个page项目,比如 dancehole.github.io/dancehole dancehole.github.io/a dancehole.github.io/b dancehole.github.io/c

现在我希望把每一个项目都映射到下面的格式: static.dancehole.cn/a static.dancehole.cn/b static.dancehole.cn/c 可行吗

assistant:

  • 是的,这是可行的。您可以通过使用子域和GitHub Pages进行自定义域名设置来实现这一点。主要涉及两个步骤:

  • 设置GitHub Pages的CNAME文件:每个项目都需要一个CNAME文件,以配置自定义域名。

  • 配置DNS记录:在您的域名注册商那里配置DNS记录,将子域名指向GitHub Pages的服务器。

Step 1: 设置各个GitHub Pages项目的CNAME文件

为每个GitHub Pages项目添加一个名为 CNAME 的文件,并在文件中添加对应的子域。例如:

  • dancehole.github.io/a项目
  • a 项目的根目录下添加CNAME文件
  • CNAME文件内容:static.dancehole.cn/a

  • dancehole.github.io/b项目

  • b 项目的根目录下添加CNAME文件
  • CNAME文件内容:static.dancehole.cn/b

  • dancehole.github.io/c项目

  • c 项目的根目录下添加CNAME文件
  • CNAME文件内容:static.dancehole.cn/c

  • dancehole.github.io/dancehole项目(如果需要也配置):

  • dancehole 项目的根目录下添加CNAME文件
  • CNAME文件内容:static.dancehole.cn/dancehole

Step 2: 配置DNS记录

在您的域名注册商的DNS管理面板中,添加CNAME记录,将每个子域映射到GitHub Pages的服务器。GitHub Pages的官方记录是 username.github.io

假设您的GitHub用户名是 dancehole,所以基本的配置会是:

  • 主机记录a.static 记录类型CNAME 记录值dancehole.github.io

  • 主机记录b.static 记录类型CNAME 记录值dancehole.github.io

  • 主机记录c.static 记录类型CNAME 记录值dancehole.github.io

  • 主机记录dancehole.static 记录类型CNAME 记录值dancehole.github.io

具体配置步骤(以腾讯云为例):

  1. 登录您的腾讯云账户,并进入DNS管理部分。
  2. 找到您的域名 dancehole.cn 并进入DNS设置。
  3. 添加新的CNAME记录:
  4. 主机记录a.static
  5. 记录类型CNAME
  6. 记录值dancehole.github.io

  7. 添加新的CNAME记录:

  8. 主机记录b.static
  9. 记录类型CNAME
  10. 记录值dancehole.github.io

  11. 添加新的CNAME记录:

  12. 主机记录c.static
  13. 记录类型CNAME
  14. 记录值dancehole.github.io

  15. 添加新的CNAME记录:

  16. 主机记录dancehole.static
  17. 记录类型CNAME
  18. 记录值dancehole.github.io

验证和等待生效

  1. 确定您已将CNAME文件添加到了GitHub项目的根目录,并被成功推送到主分支。
  2. 确定您在DNS管理面板上正确添加了CNAME记录。
  3. 等待DNS配置生效,可能需要几分钟到48小时。
  4. 使用浏览器访问 http://static.dancehole.cn/ahttp://static.dancehole.cn/bhttp://static.dancehole.cn/c 等链接,确保它们正确指向相应的GitHub Pages项目。

完成上述步骤后,您的多个GitHub Pages项目应该都能通过定义的子域名进行访问了。

user:

  • 这样的结果是http://brief.static.dancehole.cn/ 不能使用路由的方式吗?

assistant:

  • 您希望能通过类似 http://static.dancehole.cn/ahttp://static.dancehole.cn/b 的路径访问和管理多个项目,而不是使用多个子域。这种情况下,可以利用GitHub Pages的项目页面加上反向代理实现。

方法一:利用GitHub Pages的路径

GitHub Pages有用户页面(username.github.io)和项目页面(username.github.io/repo-name)两种类型。您可以将项目存储在各自的仓库中,从而根据不同的路径访问各项目:

例如:

  • dancehole.github.io/a 对应仓库 a
  • dancehole.github.io/b 对应仓库 b
  • dancehole.github.io/c 对应仓库 c

方法二:使用反向代理服务器

若想将所有项目映射到相同的域名下,如 http://static.dancehole.cn/a,可以配置一个反向代理服务器(如Nginx)来实现。

步骤:

  1. 设置GitHub Pages的项目路径
  2. 按照方法一,将所有项目配置在 dancehole.github.io/adancehole.github.io/b 等路径下。

  3. 配置反向代理服务器

假设您的服务器已安装Nginx,Nginx的配置文件 nginx.conf 可能位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default

配置示例如下:

server {
    listen 80;
    server_name static.dancehole.cn;

    location /a/ {
        proxy_pass https://dancehole.github.io/a/;
        proxy_set_header Host $host;
    }

    location /b/ {
        proxy_pass https://dancehole.github.io/b/;
        proxy_set_header Host $host;
    }

    location /c/ {
        proxy_pass https://dancehole.github.io/c/;
        proxy_set_header Host $host;
    }

    location / {
        proxy_pass https://dancehole.github.io;
        proxy_set_header Host $host;
    }
}
  1. 配置DNS

确保您的域名 static.dancehole.cn 解析到您的Nginx服务器的IP地址。

最终效果

  • 访问 http://static.dancehole.cn/a 会反向代理到 https://dancehole.github.io/a/
  • 访问 http://static.dancehole.cn/b 会反向代理到 https://dancehole.github.io/b/
  • 访问 http://static.dancehole.cn/c 会反向代理到 https://dancehole.github.io/c/

这样,您实际上是利用Nginx作为中介,实现通过路由方式访问不同的GitHub Pages项目。

总结

通过设置GitHub Pages的项目路径以及反向代理服务器,您可以实现类似 http://static.dancehole.cn/a 的访问方式。此方案可以简化DNS设置,同时利用Nginx的反向代理功能来分发请求。