IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    重新迁移回 GCP

    Phoenix Nemo发表于 2016-12-12 13:54:28
    love 0

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

    Performance with GCP

    虽然 AWS 用得挺安心不过越来越多的人向我抱怨博客打开速度很慢,想看文章都要等好久什么的。于是纠结了下,还是迁回了最贵但是最快的 Google Cloud Platform。这里记录一下调(zhe)教(teng)过程,毕竟 GCP 的 Cloud CDN 依然在 Alpha/Beta 阶段,可配置的选项实在太少而且很多 caveats。

    前期准备

    • 域名
    • SSL 证书
    • 网站程序或内容

    创建实例

    我这样没什么访问量的静态网站用 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; # health check
    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 超棒(๑•̀ㅂ•́)و✧



沪ICP备19023445号-2号
友情链接