ここ数年、AWS環境の案件ばかりだったが、最近GCP案件に携わる機会が増えてきて、
GCPの勉強しながら対応している。
この記事では、独自ドメインで http/httpsを受け付けられる「Webサーバ+LB」の環境構築のやり方を
できる限り一般化した例で備忘する。
作る環境について
作る環境のイメージ図は以下。
(画像は こちら より拝借)
その他、ありがちなリダイレクトルールの設定をする。
- https://独自ドメイン
は https証明書OKでWebコンテンツを表示する
- http://独自ドメイン
は https のURLにリダイレクトさせる。
- http(s)://www.独自ドメイン
は https のURLにリダイレクトさせる。
利用したGCPサービス
- インスタンス: GCE
- ロードバランサー: HTTP(S) Load Balancing Concepts
- 証明書管理: Google-managed SSL certificates
- DNS管理: CloudDNS
STEP1. GCEインスタンスを立てる
デフォルトのDebian9イメージを選択してnginxサーバを立てる。
ファイアーウォールはhttpアクセスはグローバルからアクセスできるようにチェックしておく。
# nginxインストール・自動起動設定・起動
$ sudo apt-get install nginx
$ sudo /lib/systemd/systemd-sysv-install enable nginx
$ sudo nginx
お名前.comで1円で売出し中の「.work」ドメインで検証。
ドメインはkoshilife.work
とした。nginx設定として以下ファイルを作成。
- 設定内容:
- server_nameに該当しないものはリクエストを返却しない 参考記事
- www無リクエストでかつ、httpsではないhttpリクエストはhttpsのURLにリダイレクトさせる。
- www有リクエストはwww無へリダイレクトさせる。
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 80;
server_name koshilife.work;
root /var/www/public_html;
if ($http_x_forwarded_proto = 'http') {
return 301 https://$server_name$request_uri;
}
}
server {
listen 80;
server_name www.koshilife.work;
return 301 https://koshilife.work$request_uri;
}
STEP2. インスタンスグループを作る
シンプルな検証目的なので「Single zone/非マネージド インスタンスグループ」で作成し、
STEP1で作成したインスタンスを紐づけた。
STEP3. LBを作る
GCPコンソールの「負荷分散」の設定画面で新規作成を選び「HTTP(S) 負荷分散」を選び、
ざっくりの設定内容は以下。
- バックエンドサービス設定
- STEP2で作成した「インスタンスグループ」を指定し、デフォルト値を選択して進む。
- ヘルスチェック設定も新規作成しデフォルト値で作成した。
- ホストとパスのルール設定: 設定なしでOK
- フロントエンドの設定
STEP4. DNSのAレコードを更新する。
STEP3で発行したSSL証明書が有効になる条件に証明書で指定したドメインの名前解決をした時
LBのIPが弾けることが有効化条件に含まれるのでDNSゾーン情報を更新する。
STEP5. 証明書有効化待ち
SSL証明書が有効になるまで30分程度待つ。
- LB作成後の状態では証明書ステータスは無効。
- 20分くらいで証明書がアクティブに変わった。
- ドメインにアクセスし、リダイレクト設定、https鍵マークが問題なければ終わり。