KUSANAGI Security EditionではWebサーバとしてNginxとApache HTTP Serverを選択することができます。
また、両者を組み合わせたWebサーバ構成を行うことができます。
ここでは各Webサーバ構成をそれぞれ解説します。
- nginxリバースプロキシ + nginxモード
- nginxリバースプロキシ + httpdモード
- nginxリバースプロキシ + 運用nginx + 検証nginxモード
Webサーバ構成の機能比較
各Webサーバ構成で利用できる機能の違いを表にまとめています。
各機能の詳細については、後述の各モードの説明や、kusanagi コマンドを参照してください。
機能 | 1. nginxリバースプロキシ + nginxモード | 2. nginxリバースプロキシ + httpdモード | 3. nginxリバースプロキシ + 運用nginx + 検証nginxモード |
---|---|---|---|
bcache | WordPressのプロファイルで使用できます | WordPressのプロファイルで使用できます | WordPressのプロファイルで使用できます |
fcache | 全てのプロファイルで使用できます | 全てのプロファイルで使用できます1 | 全てのプロファイルで使用できます |
ratelimit | 全てのプロファイルで使用できます | 全てのプロファイルで使用できます | 全てのプロファイルで使用できます |
.htaccessファイル | 使用できません | 全てのプロファイルで使用できます | 使用できません |
HTTP/3 | 全てのプロファイルで使用できます | 全てのプロファイルで使用できます | 全てのプロファイルで使用できます |
WAF | NAXSIを使用 | 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にばバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/nginx/conf.proxy.d
- nginx
- /etc/opt/kusanagi/nginx/conf.production.d
- /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
- /etc/opt/kusanagi/nginxXXX/conf.production.d (XXXにばバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/nginx/conf.production.d
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にはバージョンが入ります)
- /home/kusanagi/PROFILE/log/nginx
- httpd
- /home/kusanagi/PROFILE/log/httpd
- http/httpsに関わらずaccess.log/error.logに出力されます。
- /var/opt/kusanagi/log/httpdXX (XXにはバージョンが入ります)
- /home/kusanagi/PROFILE/log/httpd
設定ファイルの場所
- 共通の設定 (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にばバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/nginx/conf.proxy.d
- httpd
- /etc/opt/kusanagi/httpd/conf.production.d
- /etc/opt/kusanagi/httpd/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
- /etc/opt/kusanagi/httpdXX/conf.production.d (XXにばバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/httpd/conf.production.d
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にはバージョンが入ります)
- /home/kusanagi/PROFILE/log/nginx
- 運用nginx
- /home/kusanagi/PROFILE/log/nginx
- http/httpsに関わらずaccess.log/error.logに出力されます。
- /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)
- /home/kusanagi/PROFILE/log/nginx
- 検証nginx
- /home/kusanagi/PROFILE/log/nginx
- http/httpsに関わらずstaging_access.log/staging_error.logに出力されます。
- /var/opt/kusanagi/log/nginxXXX (XXXにはバージョンが入ります)
- /home/kusanagi/PROFILE/log/nginx
設定ファイルの場所
- 共通の設定 (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にばバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/nginx/conf.proxy.d
- 運用nginx
- /etc/opt/kusanagi/nginx/conf.production.d
- /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
- /etc/opt/kusanagi/nginxXXX/conf.production.d (XXXにはバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/nginx/conf.production.d
- 検証nginx
- /etc/opt/kusanagi/nginx/conf.staging.d
- /etc/opt/kusanagi/nginx/conf.d の設定ファイルから自動生成されます。そのため、直接更新しないでください。
- /etc/opt/kusanagi/nginxXXX/conf.staging.d (XXXにはバージョンが入ります)
- ミドルウェアが管理する設定ファイルです。ミドルウェアのバージョンアップ等で更新されるため、直接更新しないでください。
- /etc/opt/kusanagi/nginx/conf.staging.d
- .htaccessファイルでIPアドレスなどを元にアクセス制限を行っている場合は、fcacheを使用しないかキャッシュしないように設定してください。 ↩︎