Nginx 設定ファイルビルダー (nginx.conf)

ドメイン,待受ポート,root,index,任意のSSLとHTTPからHTTPSへの転送,Gzip,静的キャッシュ,固定セキュリティヘッダー,複数のリバースプロキシを選び,Nginxのserverブロック雛形を生成します.

読み込み中...

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

生成する範囲とserverブロック雛形の位置付け

このツールは,フォームで指定した値からNginxのserverブロックを組み立てるための雛形生成器です.nginx.conf全体を作るものではなく,プロセス数を定めるグローバル領域,eventsブロック,httpブロック,共通ログ形式,include構成などは出力しません.

既存のnginx.confやconf.d,sites-enabledなどの構成を確認し,出力したserverブロックをどこへ配置するかは利用環境に合わせて判断する必要があります.

基本項目では,server_nameへ入るホスト名,待受ポート,静的ファイルのroot絶対パス,空白区切りのindexファイル名を指定します.ルートlocationでは,要求URIに対応するファイルまたはディレクトリを順に確認し,見つからない場合はindex.htmlへフォールバックするtry_files $uri $uri/ /index.htmlの形を採用します.

SPAのクライアント側ルーティングには利用できますが,存在しないURLでもindex.htmlへ渡すため,静的サイトやAPI中心の構成では404処理との関係を確認して調整してください.

さらに,任意のSSL設定,HTTPからHTTPSへの転送,固定セキュリティヘッダーと任意CSP,Gzip,静的ファイルのキャッシュ,複数のリバースプロキシlocation,固定のエラーページ指定を追加できます.これらは選択した項目を文字列として並べた出発点であり,ホスト上の他設定と統合された完成構成ではありません.

第2章

入力検証と設定文字列への注入防止

Nginxの設定は改行,波括弧,セミコロンなどで構造が変わるため,値をそのまま連結すると別ディレクティブを差し込まれる可能性があります.本ツールは項目ごとに形式を制限し,エラーが一つでもある間は出力を空にしてコピーボタンを無効にします.ただし,この検証はフォームから生成する文字列の境界を守るためのものであり,Nginxの構文解析や設定内容の意味確認とは異なります.

ホスト名にはlocalhost,または英数字とハイフンから成るラベルをドットで連結したASCIIホスト名を受け付けます.末尾ドット,空ラベル,ラベル先頭末尾のハイフン,規定長を超える値は拒否します.待受ポートは1〜65535の整数です.root,証明書,秘密鍵の各パスはスラッシュで始まる絶対パスに限定し,空白,制御文字,波括弧,セミコロン,#,引用符,バックスラッシュ,親ディレクトリを表す区間などを拒否します.

indexは最大20個の安全なファイル名を空白区切りで指定します.

リバースプロキシのlocationはスラッシュで始まるパスとし,ルート単独,重複,設定を分断する文字を受け付けません.転送先は2048文字以内の固定されたhttpまたはhttps URLに限定し,認証情報,フラグメント,空白,設定分断文字,およびNginxの$変数を拒否します.

前後の空白を除去した後のパス,クエリ,末尾スラッシュ,パーセントエンコーディングは正規化せずそのまま保持されます.CSPはディレクティブをセミコロンで区切り,source expressionのシングルクォートも使える一方,改行,制御文字,波括弧,#,ダブルクォート,バックスラッシュ,ドル記号を拒否します.

この差は,ディレクティブごとに安全に許容すべき構文が異なるためです.

第3章

SSLとHTTPからHTTPSへの転送

SSLを有効にすると,HTTPS用serverブロックにlisten 443 ssl http2,証明書と秘密鍵の絶対パス,TLS 1.2とTLS 1.3,暗号スイート,セッションキャッシュとタイムアウトの雛形を出力します.HTTPからHTTPSへの転送も有効にした場合は,80番で受けた要求を同じホストとURIのhttps URLへ301転送する別serverブロックを前置します.

転送を無効にした場合の待受構成も含め,既存のserverブロックとポートが競合しないかを確認してください.

入力欄の証明書パスが形式検証を通っても,そのファイルがサーバー上に存在するとは限りません.証明書の有効期限,秘密鍵との組み合わせ,権限,証明書チェーン,対象ホスト名も検証対象外です.また,listen 443 ssl http2の書式はNginxの版によって扱いが変わる場合があり,必要なモジュールが組み込まれているかもブラウザからは確認できません.

利用中の版の公式文書とビルドオプションを参照してください.

セキュリティヘッダーを同時に有効にすると,SSL時にはHSTSも出力します.HSTSはブラウザへ長期間HTTPS利用を指示するため,サブドメインを含めた運用準備が整っているかを確認せずに適用すると到達性へ影響する場合があります.証明書の準備とDNS切替,HTTP到達性,転送先の確認を分けて行い,段階的に検証することが重要です.

第4章

静的配信,ヘッダー,圧縮,キャッシュ,プロキシの構成

固定セキュリティヘッダーでは,X-Frame-OptionsをSAMEORIGIN,X-Content-Type-Optionsをnosniff,Referrer-Policyをno-referrer-when-downgradeとしてadd_headerへ追加します.

SSL有効時はHSTSも追加し,入力がある場合だけContent-Security-Policyを出力します.CSPの文字検証は設定ファイルを分断する入力を抑えるだけで,スクリプト,画像,フォント,接続先などアプリケーションが必要とする配信元を正しく許可しているかは判定しません.

ブラウザで実際のページを確認し,違反報告や開発者ツールの内容を基に調整してください.

Gzipを有効にすると,圧縮レベル6とテキスト,CSS,XML,JSON,JavaScript,SVGなどのMIMEタイプを含む固定ディレクティブを追加します.静的キャッシュでは,画像や動画などの対象拡張子を1か月,CSSとJavaScriptを1年とするexpiresとCache-Controlの雛形を出力します.

ファイル名に内容ハッシュを使わない環境では長期キャッシュが更新反映を遅らせることがあるため,配信方式に合わせた見直しが必要です.固定のerror_pageは404と50x系を指定しますが,参照先ファイルの存在までは調べません.

リバースプロキシは複数追加でき,各locationにproxy_pass,HTTP 1.1,UpgradeとConnection,Host,X-Real-IP,X-Forwarded-For,X-Forwarded-Protoなどのヘッダーを出力します.URLの形式が正しくても,上流サービスが起動しているか,パス末尾スラッシュによるURI変換が意図どおりか,タイムアウトやリクエストサイズをどうするかは別の検討事項です.

locationの一致規則や既存設定からの継承も含めて確認してください.

第5章

ブラウザで確認できない事項とnginx -tの役割

本ツールはNginx本体を起動せず,生成した設定をNginxのパーサーへ渡しません.そのため,画面にエラーがないことはnginx -tの成功を意味しません.Nginxの版,導入モジュール,メイン設定からのinclude順序,同名server_nameやlistenの重複,親ブロックから継承されるディレクティブなどによって,構文エラーや意図しない動作が生じる可能性があります.

また,DNSが対象サーバーを指しているか,証明書と秘密鍵を読み込めるか,上流URLへ接続できるか,root配下のファイル権限が適切か,固定エラーページが存在するかは検証しません.CSPやキャッシュ期間,TLS設定,転送ヘッダーがアプリケーション要件に合うかという意味上の妥当性も対象外です.入力形式の検証と,稼働環境を含めた設定検証を分けて考える必要があります.

生成結果を保存した後は,実際に読み込まれる設定一式を対象にnginx -tを実行し,表示されたファイル名と行番号を確認します.構文検査を通過しても,HTTP応答,HTTPS接続,静的ファイル,リバースプロキシ,キャッシュ,主要ページの表示は別途テストしてください.

第6章

環境に合わせて雛形を反映する手順

最初に,既存設定のバックアップ方法と配置先を確認し,生成したserverブロックと現在のlisten,server_name,locationが衝突しないか比較します.次に,証明書パス,root,index,上流URL,エラーページなど環境固有の値を見直します.必要な機能だけを残し,既存の共通設定で既に指定されている項目を重複させないよう整理します.

その後,Nginxの版と利用可能なモジュールを確認し,公式文書に照らして各ディレクティブを調整します.特にHTTP/2の指定方法,TLS関連の既定値,add_headerの継承,locationとproxy_passの末尾スラッシュ,長期キャッシュの対象は環境差が表れやすい箇所です.nginx -tで構文を確認し,検証環境で代表的なURLとエラー時の挙動を試してから,運用手順に従って反映します.

設定の反映コマンドやサービス管理方法は,OS,コンテナ,管理パネル,プロセス管理方式によって異なります.特定のリロード方法を一律に選ばず,その環境で定められた手順,ロールバック方法,監視項目を確認してください.このツールの役割は,よく使うserverブロック要素を入力値から揃えるところまでであり,設計判断と本番環境での検証は管理者が行います.

よくある質問(FAQ)

A.
いいえ.生成するのはserverブロックを中心とした雛形で,eventsやhttpなどを含むnginx.conf全体ではありません.既存構成のinclude関係やlocationの優先順位を確認し,環境に合わせて組み込んでください.
A.
ホスト名,1〜65535の整数ポート,ASCII絶対パス,最大20個のindexファイル名,重複や単独ルートのないlocation,固定のhttpまたはhttpsプロキシURLなど各項目を限定形式で検証します.SSLパスはSSL有効時のみ,CSPはセキュリティヘッダー有効かつ入力が非空の場合のみ検証されます.文字検証では,CSPに限り単一引用符とセミコロンを許可しつつダブルクォート,改行,制御文字,波括弧,#,バックスラッシュ,ドル変数を拒否しますが,他の項目では設定を分断し得る記号全般を制限します.なお本機能は完全なNginx構文検証ではありません.検証エラーが1件でもある間は生成結果を完全に空にしてコピー機能を無効化します.
A.
確認できません.証明書と秘密鍵のパスは文字列として出力するだけで,ファイルの存在,有効期限,組み合わせは検証しません.DNSの解決結果や上流サーバーの応答も調べないため,別途実環境で確認してください.
A.
固定のX-Frame-Options,X-Content-Type-Options,Referrer-Policyと,SSL時のHSTSを出力できます.任意CSPは設定ファイルへの注入を防ぐ文字検証のみで,サイトに必要な配信元を許可しているかなど内容の妥当性は判定しません.
A.
対象環境の公式文書と既存設定を照合し,実際に読み込まれる全設定をnginx -tで検査してください.listen 443 ssl http2を含む構文はNginxの版やモジュール構成で扱いが異なる場合があります.反映方法もOSや運用方式に合わせて選んでください.