サーバーの設定の見直し

サーバーを引っ越したので、もろもろの設定を見直した。

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_pathtrueにして、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周りを触った
  • オブジェクトストレージを導入した。
  • セキュリティ周りを設計した。