使い方
- ドメインを入力し、サイトの種類を選びます。リバースプロキシではアップストリームのアドレス、それ以外では Web ルートを入力します。
- HTTPS、HTTP/2、HSTS、www リダイレクト、gzip、キャッシュ、セキュリティヘッダーなどを必要に応じて選びます。
- 設定を /etc/nginx/conf.d/ にコピーまたはダウンロードし、nginx -t を実行してから再読み込みします。
オプションの説明
- リバースプロキシ
- アップストリームへ転送し、Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto を渡すため、バックエンドが訪問者の IP とスキームを認識できます。
- シングルページアプリ
- 不明なパスを index.html にフォールバックするため、React Router や Vue Router の履歴モードでも再読み込み時に 404 になりません。
- HTTPS
- 証明書のパスは certbot(Let's Encrypt)の既定に合わせ、HTTP は HTTPS へ 301 リダイレクトします。HTTP/2 はすべての nginx で動く listen 443 ssl http2 形式を使います。
- HSTS
- ブラウザに、そのドメインとすべてのサブドメインで 1 年間 HTTPS だけを使わせます。先にすべてのサブドメインで HTTPS が動くことを確認してください。
例: HTTPS と www に対応するシングルページアプリ
ドメインを example.com にし、「シングルページアプリ(SPA)」、「HTTPS(Let’s Encrypt の証明書パス)」、HTTP/2、「www. にも応答してリダイレクトする」をオンにして (短くするため「Gzip 圧縮」「セキュリティヘッダー」「静的ファイルを長期キャッシュ」はオフ)、3 つの server ブロックが書き出されます。
- ポート 80 は 2 つの名前に応答し、証明書の更新用に
/.well-known/acme-challenge/へ到達できる状態を保ち、それ以外はすべて 301 でhttps://example.com$request_uriに送ります。 www.example.comのポート 443 は同じ証明書を使い、ドメイン単体 (www なし) への 301 を返します。example.comのポート 443 がサイトを配信します。
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
2 つの HTTPS ブロックは、どちらも /etc/letsencrypt/live/example.com/fullchain.pem と privkey.pem を指し、TLS 1.2 と 1.3 を許可して、10 MB の共有セッションキャッシュと 1 日のセッションタイムアウトを使います。/settings のようなクライアント側ルートで再読み込みしても 404 ではなくアプリが返されるのは、try_files の行のおかげです。
よくある質問
nginx -t で http2 パラメーターが非推奨と警告されるのはなぜですか?
nginx 1.25.1 以降は独立した http2 on; が推奨されていますが、Ubuntu 24.04 などに含まれる 1.24 は対応していません。listen ... http2 形式はどのバージョンでも動き、新しい版では警告だけが表示されます。
証明書に www を含める必要がありますか?
www リダイレクトを有効にするなら必要です。たとえば certbot -d example.com -d www.example.com のように両方の名前を取得してください。
413 Request Entity Too Large でアップロードに失敗します。どうすればよいですか?
nginx のリクエスト本文の既定値は 1 MB です。「最大アップロードサイズ」を必要な値(たとえば 100)に設定してください。
プロキシ経由の WebSocket 接続に失敗します。なぜですか?
プロキシは Upgrade と Connection ヘッダーを転送する必要があります。「WebSocket に対応」を選ぶとそれらが追加され、読み取りタイムアウトも 1 時間になります。
プライバシー
このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。