HOME » ドキュメント » KUSANAGI Security EditionのWebサーバ構成

KUSANAGI Security EditionのWebサーバ構成

KUSANAGI Security EditionではWebサーバとしてNginxとApache HTTP Serverを選択することができます。
また、両者を組み合わせたWebサーバ構成を行うことができます。
ここでは各Webサーバ構成をそれぞれ解説します。

  1. nginxリバースプロキシ + nginxモード
  2. nginxリバースプロキシ + httpdモード
  3. nginxリバースプロキシ + 運用nginx + 検証nginxモード

Webサーバ構成の機能比較

各Webサーバ構成で利用できる機能の違いを表にまとめています。
各機能の詳細については、後述の各モードの説明や、kusanagi コマンドを参照してください。

機能1. nginxリバースプロキシ + nginxモード2. nginxリバースプロキシ + httpdモード3. nginxリバースプロキシ + 運用nginx + 検証nginxモード
bcacheWordPressのプロファイルで使用できますWordPressのプロファイルで使用できますWordPressのプロファイルで使用できます
fcache全てのプロファイルで使用できます全てのプロファイルで使用できます1全てのプロファイルで使用できます
ratelimit全てのプロファイルで使用できます全てのプロファイルで使用できます全てのプロファイルで使用できます
.htaccessファイル使用できません全てのプロファイルで使用できます使用できません
HTTP/3全てのプロファイルで使用できます全てのプロファイルで使用できます全てのプロファイルで使用できます
WAFNAXSIを使用mod_securityを使用NAXSIを使用
ミドルウェアのSafeUpgrade使用できません使用できませんnginxのバージョンをSafeUpgradeできます

Webサーバ構成の指定と変更

Webサーバ構成の初期設定

Webサーバ構成の指定は kusanagi init コマンド、および、各 kusanagi コマンドで行うことができます。

3. nginxリバースプロキシ + 運用nginx + 検証nginxモード は kusanagi init コマンドで指定することはできません。1. nginxリバースプロキシ + nginxモード で初期化した後に、対応する kusanagi コマンドでWebサーバの構成を変更します。

kusanagi コマンド1. nginxリバースプロキシ + nginxモード2. nginxリバースプロキシ + httpdモード3. nginxリバースプロキシ + 運用nginx + 検証nginxモード
kusanagi init コマンド--nginxXXXオプション
(XXXにはバージョンが入ります)
--httpdXXオプション
(XXXにはバージョンが入ります)
(kusanagi init コマンドでは指定できません)
対応する kusanagi コマンドkusanagi nginx コマンドkusanagi httpd コマンドkusanagi proxy コマンド

Webサーバ構成の変更と再起動

それぞれのWebサーバ構成で動作している時に、別のWebサーバ構成に対応する kusanagi コマンドを実行することで、Webサーバ構成を変更できます。例えば、Webサーバ構成が 1. nginxリバースプロキシ + nginxモード で動作している時に、 kusanagi httpd コマンドを実行すると 2. nginxリバースプロキシ + httpdモード に変更します。

それぞれのWebサーバ構成で動作している時に、同じWebサーバ構成に対応する kusanagi コマンドを実行すると、そのWebサーバ構成のまま各Webサーバを再起動します。例えば、Webサーバ構成が 1. nginxリバースプロキシ + nginxモード で動作している時に、 kusanagi nginx を実行すると 1. nginxリバースプロキシ + nginxモード のを全てのWebサーバを再起動します。

kusanagi コマンド1. nginxリバースプロキシ + nginxモード2. nginxリバースプロキシ + httpdモード3. nginxリバースプロキシ + 運用nginx + 検証nginxモード
kusanagi nginx コマンド再起動1. nginxリバースプロキシ + nginxモード に変更1. nginxリバースプロキシ + nginxモード に変更
kusanagi httpd コマンド2. nginxリバースプロキシ + httpdモード に変更再起動2. nginxリバースプロキシ + httpdモード に変更
kusanagi proxy コマンド3. nginxリバースプロキシ + 運用nginx + 検証nginxモード に変更3. nginxリバースプロキシ + 運用nginx + 検証nginxモード に変更再起動

各 kusanagi コマンドで、Webサーバの再起動やWebサーバ構成を変更する際には、設定ファイルの検証を行ってエラーがない場合にのみ再起動や変更を行います。設定ファイルにエラーがあった場合には再起動や変更を行わず、現在のWebサーバ構成をそのまま継続します。

Webサーバ構成のリロード

各 kusanagi コマンドに --reload オプションをつけて実行することで、Webサーバ構成の全ての設定ファイルのリロードを行えます。この際も、設定ファイルの検証を行ってエラーがない場合にのみリロードを行います。設定ファイルにエラーがあった場合にはリロードを行わず、現在のWebサーバ構成をそのまま継続します。

Webサーバ構成の設定ファイルの検証

各 kusanagi コマンドに --test オプションをつけて実行することで、Webサーバ構成の全ての設定ファイルの検証を行えます。

1. nginxリバースプロキシ +nginxモード

Nginxがリバースプロキシとして動作して、その裏で別のNginxを動作するモードです。

リバースプロキシのNginxがポート80/443でリクエストを受け付けて、別のNginxにリバースプロキシします。
Nginxがポート8000でリクエストを受け付けて、php-fpmによりPHPの実行処理を行います。
CGI (perl) も同様にリクエストを受け付けて、fcgiwrapによって実行処理を行います。
WordPressのプロファイルではbcacheを利用できます。また、全てのプロファイルでfcache、ratelimit、HTTP/3を利用できます。

リバースプロキシのNginxのサービス名は nginxXXX@proxy (XXXにはバージョンが入ります) です。
Nginxのサービス名は nginxXXX@production (XXXにはバージョンが入ります) です。

動作の確認

kusanagi status コマンドで以下のように表示されます。

*** (active) nginx : nginx129@proxy ***
* nginx129@proxy.service - The NGINX HTTP and reverse proxy server (proxy)
Loaded: loaded (/usr/lib/systemd/system/nginx129.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2025-08-06 10:24:07 JST; 6 days ago

*** (active) nginx : nginx129@production ***
* nginx129@production.service - The NGINX HTTP and reverse proxy server (production)
Loaded: loaded (/usr/lib/systemd/system/nginx129.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2025-08-06 10:24:07 JST; 6 days ago

ログの場所

  • /home/kusanagi/PROFILE/log/nginx
    • httpはaccess.log/error.logに出力されます。
    • httpsはssl_access.log/ssl_error.logに出力されます。
  • /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)

設定ファイルの場所

  • 共通の設定 (nginx)
    • /etc/opt/kusanagi/nginx/conf.d
    • /etc/opt/kusanagi/nginxXXX/conf.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • nginx (リバースプロキシ)
    • /etc/opt/kusanagi/nginx/conf.proxy.d
      • /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/nginxXXX/conf.proxy.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • nginx
    • /etc/opt/kusanagi/nginx/conf.production.d
      • /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/nginxXXX/conf.production.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。

2. nginxリバースプロキシ + httpdモード

Nginxがリバースプロキシとして動作して、その裏でApache HTTP Serverを動作するモードです。
nginxのみでサポートされているfcacheと、.htaccessファイルなどのApache HTTP Server固有の機能を組み合わせて使用できます。

リバースプロキシのNginxがポート80/443でリクエストを受け付けて、Apache HTTP Serverにリバースプロキシします。
Apache HTTP Serverがポート8000でリクエストを受け付けて、php-fpmによりPHPの実行処理を行います。
CGI (perl) も同様にリクエストを受け付けて、fcgiwrapによって実行処理を行います。
WordPressのプロファイルではbcacheを利用できます。また、全てのプロファイルでfcache、ratelimit、HTTP/3を利用できます。

なお、fcacheについては注意点があります。.htaccessファイルでIPアドレスなどを元にアクセス制限を行っている場合は、fcacheを使用しないかキャッシュしないように設定してください。この制限は一般的なCDNと同じです。

リバースプロキシのNginxのサービス名は nginxXXX@proxy (XXXにはバージョンが入ります) です。
Apache HTTP Serverのサービス名は httpdXX@production (XXにはバージョンが入ります) です。

動作の確認

kusanagi status コマンドで以下のように表示されます。

*** (active) nginx : nginx129 ***
* nginx129@proxy.service - The NGINX HTTP and reverse proxy server (proxy)
Loaded: loaded (/usr/lib/systemd/system/nginx129@.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2025-08-06 10:24:07 JST; 6 days ago

*** (active) httpd : httpd24 ***
* httpd@production.service - The Apache HTTP Server (production)
Loaded: loaded (/usr/lib/systemd/system/httpd@.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2025-08-06 10:24:07 JST; 6 days ago

ログの場所

  • nginx (リバースプロキシ)
    • /home/kusanagi/PROFILE/log/nginx
      • httpはaccess.log/error.logに出力されます。
      • httpsはssl_access.log/ssl_error.logに出力されます。
    • /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)
  • httpd
    • /home/kusanagi/PROFILE/log/httpd
      • http/httpsに関わらずaccess.log/error.logに出力されます。
    • /var/opt/kusanagi/log/httpdXX (XXにはバージョンが入ります)

設定ファイルの場所

  • 共通の設定 (nginx)
    • /etc/opt/kusanagi/nginx/conf.d
    • /etc/opt/kusanagi/nginxXXX/conf.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • 共通の設定 (httpd)
    • /etc/opt/kusanagi/httpd/conf.d
    • /etc/opt/kusanagi/httpdXX/conf.d (XXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • nginx (リバースプロキシ)
    • /etc/opt/kusanagi/nginx/conf.proxy.d
      • /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/nginxXXX/conf.proxy.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • httpd
    • /etc/opt/kusanagi/httpd/conf.production.d
      • /etc/opt/kusanagi/httpd/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/httpdXX/conf.production.d (XXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。

3. nginxリバースプロキシ + 運用nginx + 検証nginxモード

Nginxがリバースプロキシとして動作して、その裏で更に複数のNginxを動作するモードです。
異なるバージョンのNginxを運用nginxと検証nginxで使い分けることで、現在のバージョンで運用をしつつ、異なるバージョンで検証を行って、SafeUpgradeを行うことができます。

リバースプロキシのNginxがポート80/443でリクエストを受け付けて、運用のNginxと検証のNginxにリバースプロキシします。
運用のNginxはポート8000でリクエストを受け付けて、php-fpmによりPHPの実行処理を行います。
検証のNginxはポート8001でリクエストを受け付けて、php-fpmによりPHPの実行処理を行います。
CGI (perl) も同様にリクエストを受け付けて、fcgiwrapによって実行処理を行います。
WordPressのプロファイルではbcacheを利用できます。また、全てのプロファイルでfcache、ratelimit、HTTP/3を利用できます。

運用のNginxと検証のNginxは5:1の重み付けでロードバランスされます。
明示的に検証のNginxにアクセスする場合は、HTTPリクエストのHTTPヘッダに X-Staging: on を指定します。

リバースプロキシのNginxのサービス名は nginxXXX@proxy (XXXにはバージョンが入ります) です。
運用のNginxのサービス名は nginxXXX@production (XXXにはバージョンが入ります) です。
検証のNginxのサービス名は nginxXXX@staging (XXXにはバージョンが入ります) です。

動作の確認

kusanagi status コマンドで以下のように表示されます。
以下の例では運用のNginxのバージョンが 1.27 、検証のNginxのバージョンが 1.29 となっています。

*** (active) nginx : nginx129@staging ***
* nginx129@staging.service - The NGINX HTTP and reverse proxy server (staging)
Loaded: loaded (/usr/lib/systemd/system/nginx129@.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-08-08 12:29:07 JST; 4 days ago

*** (active) nginx : nginx127@proxy ***
* nginx127@proxy.service - The NGINX HTTP and reverse proxy server (proxy)
Loaded: loaded (/usr/lib/systemd/system/nginx127@.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-08-08 12:29:07 JST; 4 days ago

*** (active) nginx : nginx127@production ***
* nginx127@production.service - The NGINX HTTP and reverse proxy server (production)
Loaded: loaded (/usr/lib/systemd/system/nginx127@.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-08-08 12:29:08 JST; 4 days ago

ログの場所

  • nginx (リバースプロキシ)
    • /home/kusanagi/PROFILE/log/nginx
      • httpはaccess.log/error.logに出力されます。
      • httpsはssl_access.log/ssl_error.logに出力されます。
    • /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)
  • 運用nginx
    • /home/kusanagi/PROFILE/log/nginx
      • http/httpsに関わらずaccess.log/error.logに出力されます。
    • /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)
  • 検証nginx
    • /home/kusanagi/PROFILE/log/nginx
      • http/httpsに関わらずstaging_access.log/staging_error.logに出力されます。
    • /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)

設定ファイルの場所

  • 共通の設定 (nginx)
    • /etc/opt/kusanagi/nginx/conf.d
    • /etc/opt/kusanagi/nginxXXX/conf.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • nginx (リバースプロキシ)
    • /etc/opt/kusanagi/nginx/conf.proxy.d
      • /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/nginxXXX/conf.proxy.d (XXXにばバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • 運用nginx
    • /etc/opt/kusanagi/nginx/conf.production.d
      • /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/nginxXXX/conf.production.d (XXXにはバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
  • 検証nginx
    • /etc/opt/kusanagi/nginx/conf.staging.d
      • /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
    • /etc/opt/kusanagi/nginxXXX/conf.staging.d (XXXにはバージョンが入ります)
      • ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。

  1. .htaccessファイルでIPアドレスなどを元にアクセス制限を行っている場合は、fcacheを使用しないかキャッシュしないように設定してください。 ↩︎