有没有从购买服务器开始的?想知道同学花了多久到这节。

博主六年前第一次购买服务器到创建一个静态网站足足花了一整天!

视频讲解

因为对于服务器新手配置可能过于宽泛与繁琐,录制了视频作为参考。

创建网站

假设你拥有域名 example.com

  1. 将博客域名 A 记录解析至你的公网 IP,例如将 blog.example.com 指向 {ip}

  2. 为确保服务器配置无误,可先创建一个测试站点进行初步验证:

    • 进入面板网站菜单,点击“创建网站”;
    • 类型选择“静态网站”;
    • 填写域名为 blog.example.com
    • 创建完成后尝试访问该地址,若显示默认静态页面,说明网络与解析均已生效。
  3. 删除测试站点,开始创建用于反向代理的正式站点:

    • 类型选择“反向代理”;
    • 域名填写 blog.example.com
    • 暂以 blog.thatcoder.cn 作为代理目标地址,以防页面报错;
    • 创建完成后进入该站点的配置界面。

配置负载均衡

假设你在 Vercel 与 Netlify 平台均已部署站点,地址分别为 example.vercel.appexample.netlify.app

  1. 在面板中选择“负载均衡”模块,点击“创建”;
  2. 填写以下参数:
    • 名称:blog (后续反向代理中使用的名称)
    • 算法:建议选择 IP Hash,测试中稳定性良好;
    • 地址:example.vercel.app:443
    • 权重:控制访问分配比例,默认为 1,可根据平台稳定性酌情调整;
    • 最大失败次数:若节点连续失败 N 次,则切换至其他节点;
    • 最大连接数:设为 1000 足矣,后续可按需调节。
  3. 到这里负载均衡就配置完毕

代码大概长这样

上游负载配置
1
2
3
4
5
upstream blog {
ip_hash;
server example.vercel.app:443 max_conns=1000 max_fails=2 weight=2;
server example.netlify.app:443 max_conns=1000 max_fails=2 weight=1;
}

添加上游映射

若不设置 SNI 与 Host 映射,某些平台会因识别错误而返回 403 或 404

  1. 切换到配置文件,在负载均衡页面靠近上方有菜单 “基本”、”日志”、”配置文件”
  2. 在最上方添加如下配置(按你的平台域名调整)
上游节点映射
1
2
3
4
5
map $upstream_addr $upstream_host {
~example\.vercel\.app example.vercel.app;
~example\.netlify\.app example.netlify.app;
default example.netlify.app;
}

开启SSL

开启 HTTPS 是反向代理 HTTPS 流量的前提,建议部署前一并配置

  1. 进入“网站”模块下的“证书”菜单;
  2. 配置 DNS 提供商的 API 信息与 ACME 账户(用于自动申请证书);
  3. 申请证书
    • 填写主域名为 blog.example.com
    • ✅自动续签
    • ✅跳过DNS校验,因为非常耗时
  4. 回到网站配置页
    • HTTPS
    • 启动HTTPS
    • Acme账号:刚刚的
    • 证书选择:选择刚刚申请的证书

修改反向代理

  1. 回到网站配置,进入“基本设置”中的“反向代理”模块;
  2. 点击源文进行编辑,因为很多配置是面板不支持填写的。
  3. 修改如下代码,根据你的平台域名去设置,保持格式一致
负载均衡配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
location ^~ / {
proxy_pass https://blog;
proxy_http_version 1.1;
# TLS 层用上游域名做 SNI 回源
proxy_ssl_server_name on;
proxy_ssl_name $upstream_host;
# HTTP 层给真实的 Host
proxy_set_header Host $upstream_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 替换 Location 都指向自己的网站IP (只需修改该部分)
proxy_redirect https://example.vercel.app/ https://blog.thatcoder.cn/;
proxy_redirect https://example.netlify.app/ https://blog.thatcoder.cn/;
# 其他设置
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
}

测试

经实测,Vercel、Netlify、CF 等平台可正常代理,GitHub Pages 在某些路径下可能返回 404,疑因 Host 校验机制较为严格,暂未深入研究。

  1. 使用无痕模式(Ctrl + Shift + N)打开浏览器,防止缓存干扰;
  2. 使用在线测速工具测试全网访问情况,观察是否存在非 200 状态响应;
  3. 如有额外问题或平台兼容性疑问,欢迎在评论区提出。

网站测速

博客国内访问效果
博客国内访问效果
博客海外访问效果
博客海外访问效果

站长测试

如果有注册 Bing、Google、Baidu 等站长可以测试网站地图抓取扫描等是否正常


本站由 钟意 使用 Stellar 1.30.4 主题创建。
又拍云 提供CDN加速/云存储服务
vercelnetlifycloudflare 提供托管服务
湘ICP备2023019799号-1
总访问