nginx Config Studio

リバースプロキシ・SPA・PHP-FPM・HTTP から HTTPS への転送などの設定をフォームから作り、手元の nginx.conf を貼ると構文エラーや見落としやすい点を一覧にします。ブラウザの中だけで動き、nginx は実行しません。

端末内で処理・アップロードなしスマホ対応オフライン対応ベータ

ファイルや入力内容はお使いの端末(ブラウザ)の中だけで処理され、サーバーへは送信されません。

サイト
用途

例: example.com。日本語ドメインは xn-- の形(punycode)で入力します。

配信方法
HTTPS・リダイレクト

空欄なら /etc/letsencrypt/live/<ドメイン>/ 以下の標準の場所を入れます。

圧縮・キャッシュ
セキュリティヘッダー
アクセス制限・上限

入れると allow を並べて最後に deny all を付けます。空欄なら制限しません。

生成した設定
# nginx 設定(LIBRA Works nginx Config Studio で生成)
# 保存先の例: /etc/nginx/conf.d/example.com.conf (http {} の中で読み込まれる場所)。反映の前に `sudo nginx -t` で確認 → `sudo systemctl reload nginx`。
# 証明書のパスは例です。certbot なら /etc/letsencrypt/live/<ドメイン>/ 以下です。

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # Let's Encrypt(HTTP-01)の確認用。certbot --webroot -w /var/www/certbot で使います。
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/certbot;
        default_type text/plain;
    }

    location / {
        return 301 https://example.com$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
    ssl_prefer_server_ciphers off;
    # DHE 系の暗号スイートを使うため、dhparam を作って指定します: openssl dhparam -out /etc/nginx/dhparam.pem 2048
    ssl_dhparam /etc/nginx/dhparam.pem;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name example.com;

    # TLS: Mozilla Server Side TLS の intermediate 相当(TLS 1.2/1.3、版 5.7 の内容を元にした 2026-10-15 時点の実装。最新は Mozilla の生成ツールで確認)。
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
    ssl_prefer_server_ciphers off;
    # DHE 系の暗号スイートを使うため、dhparam を作って指定します: openssl dhparam -out /etc/nginx/dhparam.pem 2048
    ssl_dhparam /etc/nginx/dhparam.pem;
    # http2 on; は nginx 1.25.1 以降です。古い版では listen 443 ssl http2; と書きます。

    server_tokens off;
    client_max_body_size 10m;
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    gzip_vary on;
    gzip_proxied any;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml application/rss+xml image/svg+xml font/ttf font/otf application/wasm;

    add_header Strict-Transport-Security "max-age=31536000" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    # CSP は雛形です。そのまま有効にするとページが壊れることがあるので、Report-Only で試してから調整してください。
    # add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; frame-ancestors 'self'" always;

    root /var/www/example.com/html;
    index index.html;

    # 隠しファイルを返さない(.well-known は除く)
    location ~ /\.(?!well-known) {
        deny all;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    location ~* \.(?:css|js|mjs|map|jpe?g|png|gif|ico|svg|webp|avif|woff2?|ttf|otf|eot|mp4|webm)$ {
        expires 30d;
        access_log off;
        try_files $uri =404;
    }
}

出力は雛形です。反映の前に必ず自分の環境で nginx -t を実行してください。この画面は nginx を実行せず、サーバーにも接続しません。

使い方

  1. フォームの入力
    既存の nginx.conf

    項目を選ぶ・設定を貼る

  2. proxy_pass・locationnginx -t の代わりでない

    構文と確認点を調べる

  3. nginx.conf

    整形した設定を出す

フォームで nginx の設定を作り、貼った設定の確認点も調べられる流れ
  1. 「設定を作る」で、用途(静的サイト・リバースプロキシ・SPA・PHP-FPM)とドメイン名を選びます。

  2. HTTPS・www の統一・圧縮・キャッシュ・セキュリティヘッダー・アクセス制限などを選ぶと、右下に設定が出ます。入力が不正なときは項目ごとに理由が出ます。

  3. 「コピー」か「保存」で取り出し、サーバーで `sudo nginx -t` を実行してから反映します。

  4. 手元の設定を見直すときは「設定をチェック」に貼り付け(「サンプルで試す」でも試せます)、「構文」と「確認したい点」を読みます。

  5. 読みやすく揃えたいときは「整形」でインデントを選んで取り出します。

できること

用途別のフォーム

静的サイト・リバースプロキシ(upstream・WebSocket・タイムアウト・X-Forwarded-*)・SPA(try_files)・PHP-FPM から選べます。HTTP→HTTPS の転送・www の統一・ACME の確認パス・gzip / brotli・静的ファイルのキャッシュ・allow/deny・Basic 認証の雛形・limit_req・client_max_body_size に対応します。

TLS は Mozilla の intermediate 相当

TLS 1.2/1.3 と暗号スイートは Mozilla Server Side TLS の intermediate(版 5.7)を元にしています。2026-10-15 時点の実装で、最新は Mozilla の生成ツールで確認してください。

入力を検査してから出力

ドメイン・パス・転送先・サイズ・IP は決まった形だけを受け付け、`;` や改行が入ってほかの命令になることを防ぎます。

断定しない「確認したい点」

proxy_pass の末尾の / ・alias と root の取り違え・if の使い方・location の優先順位・add_header の継承・server_name の重複・listen 443 に ssl がない・HSTS の preload・autoindex・server_tokens・古い TLS や弱い暗号を、行番号つきで挙げます。

字句解析で構文を確認

括弧の不一致・; の抜け・引用符の閉じ忘れ・未知のディレクティブを見つけ、構造(server と location の階層)を一覧にします。入力は 30 万文字・2 万ディレクティブ・入れ子 64 段までです。

送信しない

貼った設定はブラウザの中だけで処理し、サーバーへ送りません。nginx も実行しません。

こんなときに

  • Node.js・Python・Go のアプリの前に置くリバースプロキシの設定を、WebSocket やタイムアウトも含めて作りたい
  • HTTP から HTTPS への 301 転送と www の統一を、Let's Encrypt の更新を邪魔しない形で書きたい
  • 渡された nginx.conf の括弧の閉じ忘れ・セミコロン忘れを探したい
  • proxy_pass の末尾のスラッシュ、alias と root、location の優先順位でパスがずれていないか確かめたい
  • 子ブロックの add_header で、親のセキュリティヘッダーが消えていないか調べたい
  • チームで書き方がばらばらな設定のインデントを揃えたい

対応状況

機能対応補足
フォームからの設定の生成(静的・プロキシ・SPA・PHP-FPM・HTTPS 転送・ヘッダー・制限)対応—
貼り付けた設定の構文チェック(括弧・セミコロン・引用符・未知のディレクティブ)一部対応字句と括弧の対応までです。ディレクティブを置ける場所や引数の個数・値の正しさは検査しません
よくある誤りの指摘(proxy_pass・alias・location・add_header・HSTS・TLS など)一部対応代表的な書き方を目安に挙げます。誤検出も見逃しもあり、断定ではありません
インデントの整形対応—
実際の nginx -t による検査非対応nginx は実行しません。反映前に必ず自分のサーバーで nginx -t を実行してください
include の解決・ほかのファイルの読み込み非対応include の先は読まず、パスだけを一覧にします
サーバーへの接続・証明書の取得・実際の応答の確認非対応通信はしません
Lua などのコードブロックの中身の検査非対応そのまま残し、検査しません

制限・注意事項

  • 貼り付けは 30 万文字・2 万ディレクティブ・入れ子 64 段までです。
  • 出力は雛形です。証明書のパス・dhparam・PHP-FPM のソケット・ユーザー名とパスワードのファイルは、自分の環境に合わせてください。
  • brotli は nginx に ngx_brotli モジュールが必要です。http2 on; は nginx 1.25.1 以降です。
  • PHP を実行させない deny は、アップロード先などの名前を決め打ちにして、その名前のディレクトリの下の .php だけを対象にしています(既定: uploads upload files media images)。名前はフォームで変えられますが、.phtml など .php 以外の拡張子や、別名のディレクトリは対象外です。
  • Basic 認証と limit_req は server に書き、すべての location に効きます。HTTP から HTTPS への転送の server は認証の対象外です(認証情報を平文の HTTP で送らないため)。
  • TLS の設定は Mozilla の intermediate 相当です。古いブラウザや OS に合わせる設定ではありません。
  • CSP は雛形をコメントで出すだけで、有効にはしません。
  • 「確認したい点」は字句解析による目安で、正しい設定を誤って指摘することも、問題を見逃すこともあります。

プライバシーと安全性

設定の生成・解析・整形はすべてお使いのブラウザの中で行われます。入力した設定・ドメイン名・生成した設定がサーバーへ送信・保存されることはなく、nginx も実行しません。

よくある質問

nginx のリバースプロキシの設定はどう書きますか?
「設定を作る」で「リバースプロキシ」を選び、転送先(例: 127.0.0.1:3000)を入れます。proxy_pass に加えて Host・X-Forwarded-For・X-Forwarded-Proto・X-Forwarded-Host と、必要なら WebSocket の Upgrade ヘッダー・タイムアウトまで出力します。
nginx で HTTP を HTTPS に転送するには?
ポート 80 の server で `return 301 https://ドメイン$request_uri;` と書きます。このツールは Let's Encrypt の更新に使う /.well-known/acme-challenge/ を転送から外す書き方もできます。www の有無を統一するときは、そちらも同じ場所へ 301 で寄せます。
proxy_pass の末尾にスラッシュを付けると何が変わりますか?
proxy_pass に URI(/ だけでも)があると、location に一致した部分がその URI に置き換わって転送されます。URI がないと、パスはそのまま渡されます。location と proxy_pass で末尾の / が食い違うと、/ の位置がずれたパスになることがあるので、「設定をチェック」で確認できます。
add_header を書いたのに、親のヘッダーが消えるのはなぜですか?
nginx では、ある場所(location など)に add_header が 1 つでもあると、上の階層の add_header は引き継がれません(nginx 1.29.3 以降は add_header_inherit で変えられます)。ヘッダーを子にも書くか、まとめて include します。「設定をチェック」はこの形を挙げます。
nginx -t の代わりに使えますか?
使えません。括弧・セミコロン・引用符と、よくある誤りの目安を見るだけで、include も、ディレクティブを置ける場所も、値の正しさも検査しません。反映の前に、自分のサーバーで nginx -t を実行してください。
貼った nginx.conf はサーバーに送られますか?
いいえ。ブラウザの中だけで処理し、送信も保存もしません。

robots.txt テスター

robots.txt を貼り付けると、指定した URL が Googlebot や AI クローラーに「許可」か「ブロック」かと、どの行のルールが効いたかがすぐ分かります。つづりの誤りや Google が無視する命令も指摘します。

アップロードなし

MIME・Content-Type Studio

拡張子と MIME を相互に検索でき、Content-Type ヘッダーの誤りを指摘し、ドロップしたファイルの拡張子・ブラウザの file.type・中身の 3 つの食い違いを調べます。サーバー設定の下書きも作れます。

アップロードなし

証明書・CSR・PEM Studio

PEM・DER(.cer/.crt)・CSR・PKCS#7(.p7b)を読み、Subject・有効期限(残り日数)・SAN・公開鍵・署名アルゴリズム・SHA-256 フィンガープリントなどを一覧にします。チェーンの並び順と署名も確かめ、PEM と DER を変換できます。すべてブラウザの中で処理し、秘密鍵は読み込みません。

アップロードなしベータ

秘密情報スキャナー(Secret Scanner)

コードや設定ファイルを貼る・ドロップするだけで、公開前に消すべき秘密情報の候補を行番号つきで一覧します。値は既定で伏せ字、*** に置き換えたコピーも作れます。あくまで補助ツールで、検出漏れがないことは保証しません。

アップロードなし

curl解析・コード生成

Chrome や Firefox の「cURL としてコピー」を貼ると、メソッド・URL・ヘッダー・Cookie・本文を表にし、12 種類のコードへ変換します。リクエストは送らず、すべてブラウザの中で処理します。Authorization や Cookie は共有前に伏せられます。

アップロードなしベータ

Docker Compose Studio

docker run のコマンドを compose.yaml に、compose.yaml を docker run に変換します。compose.yaml は構文・Compose Specification・よくある誤りを調べ、セキュリティ上の確認点も一覧にします。コンテナの起動やイメージの取得はせず、入力は端末の外へ送りません。

アップロードなしベータ

最終更新: