変更要約: 初版(主題2.09・副主題2.09.1〜2.09.4に対応)
3.1Apache HTTPサーバーの設定と管理
Apache HTTPサーバー(httpd/apache2)の基本設定と運用を学びます。httpd.conf、apachectl/apache2ctl による制御、アクセスログ・エラーログ、仮想ホストによる複数サイトの収容、.htaccess によるディレクトリ単位の設定上書き、mod_auth_basic・mod_authz_host・AuthUserFile・AuthGroupFile・htpasswd によるベーシック認証、Redirect によるURL転送を押さえます。
Apache HTTPサーバー(httpd・Debian系ではapache2)は最も長く使われてきたWebサーバーソフトウェアで、1台で複数サイトを収容し、ディレクトリ単位でアクセス制御をかける柔軟性が実務でもLinuC L2試験でも中心的なテーマです。
3.1.1設定ファイルと起動制御
- 中心となる設定ファイルはhttpd.conf(ディストリビューションにより/etc/httpd/conf/や/etc/apache2/配下)。ディレクティブを追記・変更してhttpd/apache2本体の挙動を決めます。
- 制御コマンドはapachectl(RHEL系)/apache2ctl(Debian系)。設定の文法チェックや再起動・再読込に使い、本番反映前の
configtest相当の確認が定石です。 - アクセスログ(リクエストごとの記録)とエラーログ(起動失敗・実行時エラー)は障害切り分けの一次情報。設定ミスの多くはまずエラーログで原因が特定できます。
3.1.2仮想ホストとベーシック認証
- 仮想ホスト(VirtualHost)=1台のApacheで複数サイト(複数ドメイン)を収容する仕組み。サイトごとにドキュメントルートやログの出力先を分けられます。
- ディレクトリ単位の設定上書きは.htaccess。中央の設定ファイルを触らずに、特定ディレクトリだけ認証や挙動を変えられます。
- ベーシック認証はmod_auth_basic(認証方式そのもの)とmod_authz_host(ホスト/IPベースの認可)を組み合わせ、AuthUserFileでパスワードファイルの場所を、AuthGroupFileでグループ定義ファイルの場所を指定。パスワードファイルの作成・更新はhtpasswdコマンドで行います。
- Redirectディレクティブで、あるURLパスへのリクエストを別のURLへ転送。サイト移転やパス整理でよく使います。
「.htaccessはディレクトリ単位の上書き、httpd.confは全体設定」「ベーシック認証=AuthUserFile(htpasswdで作成)+AuthGroupFile」「mod_auth_basicは認証方式、mod_authz_hostはホスト/IPベースの認可」 の役割分担が最頻出です。apachectl/apache2ctlはディストリビューション別の呼び名の違いとして問われます。
実務でよくある要求は「社内向け管理画面だけパスワードで保護したい」です。対象ディレクトリに.htaccessを置き、AuthType Basic・AuthName "Restricted Area"・AuthUserFile /etc/httpd/.htpasswd・Require valid-userを書きます。パスワードファイルはhtpasswdで作成・追記します(htpasswd -c /etc/httpd/.htpasswd alice。-cは新規作成専用で、2人目以降には付けません)。IPアドレスでさらに絞り込みたい場合はmod_authz_hostのRequire ip系ディレクティブを併用し、社内ネットワークからのみ許可、といった多層防御が組めます。複数サイトを1台で収容する場合は仮想ホストでドメインごとにブロックを分け、それぞれ独立したドキュメントルート・ログファイルを持たせます。旧URLから新URLへ恒久的に誘導したいときはRedirect permanent /old-path https://example.com/new-pathのように書き、Redirectがパス単位の単純な転送を担います。設定変更後は必ずapachectl(やapache2ctl)の設定テストを通してから再起動し、直後はエラーログを確認して意図した通りに反映されたかを確かめるのが安全な運用です。
| 要素 | 役割 | 代表ディレクティブ/コマンド |
|---|---|---|
| 全体設定 | サーバー全体の挙動 | httpd.conf |
| ディレクトリ上書き | 特定ディレクトリだけ変更 | .htaccess |
| 認証 | ベーシック認証のユーザー/グループ | AuthUserFile・AuthGroupFile・htpasswd |
| 複数サイト収容 | ドメインごとに独立設定 | VirtualHost |
ひっかけ: 「mod_auth_basicがホスト/IPベースの制御を行う」は誤りです。認証(ユーザー名・パスワード)はmod_auth_basic、ホスト/IPベースの認可はmod_authz_hostという役割分担です。また「htpasswdは常に-cを付ける」も誤り=-cは新規作成時のみで、既存ファイルに2人目以降を追記する際に付けるとファイルが上書きされ、既存ユーザーが消えます。
3.1.3この節のまとめ
- 全体設定はhttpd.conf、ディレクトリ単位の上書きは.htaccess。制御はapachectl/apache2ctl
- ベーシック認証=AuthUserFile(htpasswdで作成)+AuthGroupFile+mod_auth_basic、IP制御はmod_authz_host。複数サイトは仮想ホスト
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 社内向け管理ディレクトリだけにベーシック認証をかけたい。中央のhttpd.confを変更せず、そのディレクトリだけに設定を反映する方法は?
Q2. 既存の.htpasswdファイルに2人目のユーザーbobを追加したい。適切なコマンドは?
Q3. Apacheの設定ファイルを編集した後、本番環境へ安全に反映する手順として最も適切なのは?

