nginx playground
(jvns.ca)<p>- nginx の設定を自由に変更してテストできるプレイグラウンド <br />
→ config と curl/http コマンドを入力して Run を押して実行<br />
→ 実行したコマンドの結果と nginx のエラーログを表示 <br />
- Vue.js フロントエンド + Go バックエンド(Gist ではサーバーコードのみ公開)<br />
- 実行ボタンを押すと Go バックエンドが次の処理を実行 <br />
→ 設定ファイルを temp ファイルとして保存<br />
→ 新しいネットワーク名前空間を作成 <br />
ip netns add $RANDOM_NAMESPACE_NAME<br />
→ go-httpbin を 777 ポートで実行<br />
→ nginx を起動<br />
→ nginx が正常に起動するまで 100ms 待機。失敗した場合は nginx のエラーログを返す<br />
→ ユーザーが入力したコマンドを実行(curl / http になっているか確認)<br />
→ リクエストの出力を返す <br />
- 1 台の共有サーバーですべてのリクエストを処理 <br />
<br />
- セキュリティ面でのアプローチ:少しの isolation、少しの YOLO <br />
→ フロントエンドは CDN でホスト <br />
→ DB は使わない。ブラウザのローカルストレージのみ使用<br />
→ すべての nginx をそれぞれ専用のネットワーク名前空間に置く。インターネット接続はできないようにする <br />
→ fly.io の無料ティアを使用 <br />
→ FAQ に「みんなが気持ちよく使えるように行動してほしい」と書く <br />
<br />
- パフォーマンス<br />
→ とても小さなインスタンス(1 shared CPU、256MB RAM)<br />
→ フロントエンドは CDN 上にあるため、バックエンドは実際に使われる時だけ稼働<br />
→ 1 リクエストあたり約 400ms。悪くない <br />
→ Go 版 httpbin はオリジナルの Python 版より軽量 <br />
→ フロントエンドの性能はそれほど良くはない </p>
まだコメントはありません。