Skip to content

Latest commit

 

History

History
108 lines (76 loc) · 3.76 KB

README_ja.md

File metadata and controls

108 lines (76 loc) · 3.76 KB

汎用 Sorry サーバー

HTTP 503 ステータス (Service Unavailable) を返すだけのサーバーです。
サーバーのメンテナンスでダウンタイムが発生するときに利用する想定です。

機能

  • すべてのリクエスト (/assets/を除く) に対して HTTP 503 のレスポンスを返します。
  • Accept ヘッダを見て、 /json が含まれていたら 503.json のレスポンスを返します。
  • リクエストのパスが .json で終わる場合も 503.json のレスポンスを返します。
  • それ以外は 503.html の内容を返します。
  • HTTPS 対応しています。複数ドメインに対応しています。
  • 環境変数で Retry-After レスポンスヘッダを指定可能です。

使い方

コンテンツ編集

503.html503.json をユースケースに合わせて編集してください。

assets の配置

必要に応じて 503.html で利用するファイルを assets ディレクトリに格納してください。

サーバーの起動

Listen ポートは環境変数の PORT で指定できます。
指定しなかった場合は 80 で Listen しますが、 Linux などでは root 以外 80 番ポートが利用できないのでご注意ください。

PORT=8080 ./maint-server

HTTPS リスナー

HTTPS を利用する場合は、以下のようなディレクトリ構成にして実行してください。

.
├── assets/
├── 503.html
├── 503.json
├── maint-server
└── ssl
    ├── your-domain-1
    │   ├── your-domain-1-fullchain.crt
    │   └── your-domain-1-private.key
    ├── your-domain-2
    │   ├── your-domain-2-fullchain.crt
    │   └── your-domain-2-private.key
    └── ...
  • 複数のドメインに対応しています。
  • 証明書は、必ず中間証明書などを結合した Chain 証明書にしてください。
  • 拡張子でファイルを判別します。証明書を .crt, 秘密鍵を .key として格納してください。
    • 両方が揃っていない場合、そのドメインの証明書は読み込まれません。
  • ssl ディレクトリに証明書がない場合は HTTPS のリスナーは起動しません。

HTTPS ポートの指定

HTTPS のポートは HTTPS_PORT で指定してください。指定しなかった場合は 443 ポートが利用されますが、Linux (ry

PORT=8080 HTTPS_PORT=8443 ./maint-server

Retry-After Response Header

RETRY_AFTER 環境変数に yyyy-MM-dd hh:mm:ss+0000 形式で日時を指定することで、レスポンスに Retry-After ヘッダを含めることができます。

RETRY_AFTER="2019-06-20 23:59:59+0900" ./maint-server

systemd サービス例

examples ディレクトリにある以下のファイルを編集してサーバー上にデプロイしてください。

デプロイ後、以下のコマンドでサービスを起動してください。

sudo systemctl daemon-reload
sudo systemctl start sorry

Upstart サービス例

examples ディレクトリにある以下のファイルを編集してサーバー上にデプロイしてください。

デプロイ後、以下のコマンドでサービスを起動してください。

sudo initctl reload-configuration
sudo initctl start sorry

Build

make linux # <- linux-amd64
make cross # <- cross platform build