忍得住打 Call,忍不住折腾。看到黑科技就手痒。

虽然 AWS 用得挺安心不过越来越多的人向我抱怨博客打开速度很慢,想看文章都要等好久什么的。于是纠结了下,还是迁回了最贵但是最快的 Google Cloud Platform。这里记录一下调(zhe)教(teng)过程,毕竟 GCP 的 Cloud CDN 依然在 Alpha/Beta 阶段,可配置的选项实在太少而且很多 caveats。
前期准备
创建实例
我这样没什么访问量的静态网站用 f1.micro
就好啦~ 不过流量比较大的网站的话,还是建议选择高一些的配置和 SSD。
然后创建一个实例组(instance group),确保该实例组包含刚才创建的实例。
NGINX 配置
网站等会说。总之先配置好 SSL 和 Health Check。
1 2
| # mkdir -p /var/www/hc # touch /var/www/hc/index.html
|
默认站点配置 default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server { listen 80; listen [::]:80; server_name hc; root /var/www/hc; index index.html; }
server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; }
|
网站配置 example.com.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com;
ssl on; ssl_certificate /etc/ssl/private/example_com.pem; ssl_certificate_key /etc/ssl/private/example_com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; keepalive_timeout 70; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_dhparam /etc/ssl/certs/dhparam.pem;
add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
root /var/www/example.com; location / { } }
|
(SSL 相关的很多配置步骤省略,请自行查阅其他文档)
创建负载均衡器
戳到 Networking 标签,选择 Load balancing
然后创建一个 HTTP(S) Load Balancing
。首先为负载均衡器命名,因为要分别创建 2 个负载均衡所以这里可以写例如 website-http
之类作为区分。配置页面的三个标签:
- backend
- 创建一个新的 backend
- backend service 选择 http
- instance group 选择刚才创建的实例组
- port numbers 80
- health check 创建新的 health check 并设置 custom header,和之前 NGINX 里的配置一致,这里是
hc
- 勾选 Enable Cloud CDN
- Host and path rules
- 添加域名对应的
/
和 /*
两个路径规则。如果有特殊需求则另外添加。
- Frontend configuration
- Protocol 选择 HTTP
- Create IP Address 然后 reserve 一个 IP
第二个负载均衡器用于 HTTPS,名称可以是 website-https
这样。配置:
- backend
- 因为配置不一样,所以要再创建一个新的 backend
- backend service 选择 https (要点 Edit)
- instance group 选择刚才创建的同一个实例组
- port numbers 443
- health check 创建新的 health check 并设置协议为 https,custom header 为网站域名(因为要和 SSL 证书相符,示例里是
example.com
)
- 勾选 Enable Cloud CDN
- Host and path rules
- Frontend configration
- Protocol 选择 HTTPS
- IP 选择刚才 reserve 的 IP
- 创建证书,分别上传签发的证书、CA 证书链和私钥
更新解析&收尾
将域名的 DNS 解析到刚才 reserve 的 IP 即可。
至此就是基本的(当前版本的)Google Cloud CDN 配置步骤。还有很多可以自定义和扩展、优化的空间,但是这些需要根据特定的需求变化因此不再详细记录。
以及,不要忘记在虚拟机里把网站跑起来~
最后,南酱的 live 超棒(๑•̀ㅂ•́)و✧