AlmaLinux 9のApache HTTP Server(httpd)設定
AlmaLinux 9の標準リポジトリからhttpdをインストールし、基本設定・起動・
ファイアウォール設定・稼働状況の確認を行います。
インストール
# dnf info httpd
# dnf install httpd
# httpd -v
基本設定
既存設定をバックアップしてから、ServerNameと管理者メールアドレスを環境に合わせて設定します。
ServerNameには実際に使用するFQDNを指定してください。
# cp -a /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
# vi /etc/httpd/conf/httpd.conf
ServerAdmin webmaster@example.org
ServerName www.example.org:80
Apacheのテスト用ウェルカムページを表示しない場合は、設定ファイルが存在することを確認して退避します。
既に退避先がある場合は上書きしないでください。
# test -f /etc/httpd/conf.d/welcome.conf && test ! -e /etc/httpd/conf.d/welcome.conf.disabled && mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.disabled
稼働状況の確認(mod_status)
標準パッケージでstatus_moduleが読み込まれていることを確認します。読み込まれていない場合は、
まず/etc/httpd/conf.modules.d/内の標準設定を確認し、同じモジュールを重複定義しないでください。
# httpd -M | grep status_module
状態ページはlocalhostと管理用ネットワークからのみアクセスできるように設定します。
192.168.10.0/24は例なので、実際の管理ネットワークに置き換えてください。
# vi /etc/httpd/conf.d/status.conf
<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1 ::1 192.168.10.0/24
</Location>
不要な情報公開を避けるため、状態ページをインターネットに公開しないでください。
設定検査と起動
設定ファイルの構文を検査してから、サービスを有効化・起動します。
# apachectl configtest
# systemctl enable --now httpd
# systemctl status httpd --no-pager
ファイアウォール
まず有効なゾーンとインターフェースを確認し、HTTPを公開する必要があるゾーンだけに許可します。
externalやinternalは環境依存の例であり、実際にHTTPクライアント側へ接続しているゾーンに置き換えてください。
# firewall-cmd --get-active-zones
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --reload
# firewall-cmd --zone=public --list-services
HTTPSを提供する場合はTLS設定を別途行い、必要なゾーンに限ってhttpsサービスも許可してください。
状態ページのアクセス制御はFirewallの許可に依存せず、Apache側でも管理ネットワークに限定します。
動作確認
サーバー上で状態ページを確認します。
# curl --fail http://127.0.0.1/server-status/
外部のクライアントからWebサイトを確認し、/server-status/には許可した管理元以外から
アクセスできないことも検証してください。ログや起動状態は次のコマンドで確認できます。
# journalctl -u httpd -n 50 --no-pager
# tail -n 50 /var/log/httpd/error_log
