InfraLab
APACHE-HTTPD40 cmd

Apache HTTP Server チート集

Apache HTTP Server の VirtualHost、Directory/Location、mod_rewrite、mod_ssl、.htaccess、Basic/Digest 認証、ログ設定を実務向けに整理したチート集。

更新日
2026-05-14
参照範囲
公式ドキュメント / man page / 主要ベンダーCLI
対象実装
主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
免責
OS とバージョン差分は実環境で確認してください。

40 / 40

CommandDescriptionExampleCopy
apachectl configtest設定ファイルの構文を検証する。sudo apachectl configtest
apachectl graceful既存接続を保ちながら設定を再読込する。sudo apachectl graceful
apachectl restarthttpd を再起動する。sudo apachectl restart
apachectl statusmod_status のサーバ状態を表示する。apachectl status
httpd -Vコンパイル設定と ServerRoot を確認する。httpd -V | grep -E "SERVER_CONFIG_FILE|HTTPD_ROOT"
httpd -M読み込み済みモジュールを一覧する。httpd -M | sort
<VirtualHost *:80>HTTP 仮想ホストの最小構成。<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/example </VirtualHost>
NameVirtualHost 相当Apache 2.4 では ServerName ベースの VirtualHost をそのまま使う。<VirtualHost *:80> ServerName app.example.com ProxyPass / http://127.0.0.1:3000/ </VirtualHost>
<Directory>ファイルシステムパス単位で権限を制御する。<Directory "/var/www/example"> Require all granted AllowOverride None </Directory>
<Location>URL パス単位でアクセス制御する。<Location "/admin"> Require ip 10.0.0.0/8 </Location>
<Files>ファイル名単位でアクセス制御する。<Files ".env"> Require all denied </Files>
<If>式に応じて条件付き設定を適用する。<If "%{HTTP_HOST} == 'old.example.com'"> Redirect permanent / https://www.example.com/ </If>
a2enmodDebian 系でモジュールを有効化する。sudo a2enmod ssl rewrite headers proxy proxy_http
a2dismodDebian 系でモジュールを無効化する。sudo a2dismod status
apachectl -M grep有効モジュールを確認する。apachectl -M | grep rewrite_module
LoadModuleRHEL 系などでモジュールを直接読み込む。LoadModule rewrite_module modules/mod_rewrite.so
mod_proxy reverseバックエンドへリバースプロキシする。ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/
mod_headers HSTSレスポンスヘッダを追加する。Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
RewriteEngine Onmod_rewrite を有効化する。RewriteEngine On
HTTPS 強制HTTP から HTTPS へ 301 リダイレクトする。RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
canonical hostwww ありへ正規化する。RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
front controller存在しないパスを index.php へ渡す。RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
RewriteRule proxyrewrite でプロキシ先へ転送する。RewriteRule ^/api/(.*)$ http://127.0.0.1:8080/$1 [P,L]
SSLEngine onTLS 仮想ホストで SSL を有効化する。<VirtualHost *:443> ServerName www.example.com SSLEngine on </VirtualHost>
SSLCertificateFile証明書と秘密鍵を指定する。SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLProtocolTLS 1.2/1.3 のみに制限する。SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuiteTLS 1.2 向け cipher suite を制御する。SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrderサーバ側 cipher 優先を指定する。SSLHonorCipherOrder on
AllowOverride None本番で .htaccess 読み込みを無効化する。<Directory "/var/www/example"> AllowOverride None </Directory>
AllowOverride FileInfo AuthConfig必要な .htaccess 機能だけ許可する。<Directory "/var/www/legacy"> AllowOverride FileInfo AuthConfig </Directory>
htpasswd createBasic 認証用パスワードファイルを作る。sudo htpasswd -c /etc/apache2/.htpasswd alice
Basic authディレクトリに Basic 認証を掛ける。AuthType Basic AuthName "restricted" AuthUserFile /etc/apache2/.htpasswd Require valid-user
Digest authDigest 認証を設定する。AuthType Digest AuthName "admin" AuthDigestProvider file AuthUserFile /etc/apache2/digest.passwd Require valid-user
Require ip送信元 IP で許可する。<Location "/server-status"> Require ip 127.0.0.1 10.0.0.0/8 </Location>
LogFormat combinedカスタムログ形式を定義する。LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLogアクセスログを指定形式で出力する。CustomLog /var/log/apache2/access.log combined
ErrorLog LogLevelエラーログとレベルを設定する。ErrorLog /var/log/apache2/error.log LogLevel warn
piped log rotatelogsパイプログで日次ローテーションする。CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/access.%Y%m%d.log 86400" combined
mod_statusサーバ状態ページをローカル限定で公開する。<Location "/server-status"> SetHandler server-status Require local </Location>
SetEnvIf healthcheckヘルスチェックをアクセスログから除外する。SetEnvIf Request_URI "^/health$" dontlog CustomLog /var/log/apache2/access.log combined env=!dontlog
Related