本文へスキップ
ToolMug

Nginx 設定生成

ドメインとサイトの種類を入力し、必要な機能を選ぶと、そのまま使える nginx のサーバー設定を取得できます。Node.js、Python、Java アプリのリバースプロキシ、静的サイト、React・Vue の SPA、PHP に対応し、HTTPS、www リダイレクト、WebSocket、gzip、静的ファイルのキャッシュも設定できます。

ブラウザ内で動作 — 入力した内容はアップロードされません

HTTPS
追加設定

0 にすると nginx の既定値 1 MB のままになります。

先に証明書を取得してください。例:certbot certonly --webroot -w /var/www/letsencrypt -d example.com -d www.example.com。その後 nginx -t を実行して nginx を再読み込みしてください。

使い方

  1. ドメインを入力し、サイトの種類を選びます。リバースプロキシではアップストリームのアドレス、それ以外では Web ルートを入力します。
  2. HTTPS、HTTP/2、HSTS、www リダイレクト、gzip、キャッシュ、セキュリティヘッダーなどを必要に応じて選びます。
  3. 設定を /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 ブロックが書き出されます。

  1. ポート 80 は 2 つの名前に応答し、証明書の更新用に /.well-known/acme-challenge/ へ到達できる状態を保ち、それ以外はすべて 301 で https://example.com$request_uri に送ります。
  2. www.example.com のポート 443 は同じ証明書を使い、ドメイン単体 (www なし) への 301 を返します。
  3. 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 時間になります。

プライバシー

このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。

関連ツール