サーバーを引っ越したので、もろもろの設定を見直した。
nginx
リバースプロキシの設定を変更した。まずはproxy_pass
周りの設定を見直した。$request_uri
と$uri$is_args$args
が完全互換でないことを理解せずに使っていた。X-Forwarded-For
に$proxy_add_x_forwarded_for
を使うか$remote_addr
を使うかで再び悩んだ。websocketをプロキシできるように設定を追加した。
監視
メトリクス収集をやってみた。とりあえずPrometheus, exporters, grafanaをコマンド一つでセットアップできるようにした。おかげ様で、扱い切れないほどのメトリクスが簡単に収集でき、grafanaのimport dashboardのお陰で表示するのもあっという間だった。本当はアプリケーション寄りのメトリクスを収集したいのだけれども、そこまで調査できていない。いつもの如く、サーバーのリソースが足りなくなったらこいつらは止めるかもしれない。
grafanaをリバースプロキシの裏 +
サブディレクトリで動かすのに少しだけ苦労した。serve_from_sub_path
をtrue
にして、root_url
の末尾にサブパスを指定すると、表示されるHTMLの<base
path='/'>
がサブパスになる。websocketを使うので、websocketをプロキシするための特殊な設定を書く。proxy_redirect
を編集してリダイレクト先のURLを書き換える・・・のは、特にトラブルが起きていないので悩まなかった。プロキシのヘッダを正しく設定したからなのかもしれない。
S3 (MinIO)
Amazon S3互換のオブジェクトストレージ。通常OSの支配下にあるファイルシステムとアクセス制御を単一のサービスに切り出すことで、アクセスキーさえあればファイルシステムへ自由に読み書きできるようにしたもの、と理解した。単純なファイルのアップロード・ダウンロードにscp, ftp, rsyncしなくていいのは便利。アクセス制御もOSにユーザーを追加するのではなく、トークンで制御した方が簡単だし。
本当は専用のストレージサーバーが欲しいけれども、
静的なファイルのアップロードをSCPやFTPではなく
- swapfileを作成し、
swapon
や/etc/fstab
周りを触った - オブジェクトストレージを導入した。
- セキュリティ周りを設計した。