「Apacheのディレクティブがよくわからない・・・」
「ServerSignatureを値を変更したい」
このような場合には、この記事の内容が参考になります。
この記事では、Apacheディレクティブを確認・変更する方法を解説しています。
本記事の内容
- Apache起動時の設定
- Apache設定ディレクティブの確認方法
- ServerSignatureの確認
それでは、上記に沿って解説していきます。
Apache起動時の設定
Apache起動時の設定とは、主に以下を指しています。
- 設定ファイルのパス
- ドキュメントルート
- エラーログのパス
- 実行ユーザー・グループ
そして、これらの情報は以下のコマンドで確認できます。
apache2ctl -t -D DUMP_RUN_CFG
実行した結果は、以下。
$ apache2ctl -t -D DUMP_RUN_CFG ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/run/apache2/" mechanism=default Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used
Ubuntuであれば、普通は上記のような結果となります。
普通とは、aptコマンドでApacheをインストールしている場合を指します。
このコマンドを使えば、ドキュメントルートのパスを迷うこともありません。
エラーログのパスについても、記憶や勘に頼る必要もないです。
したがって、このコマンドは覚えておいて損はありません。
以上、Apache起動時の設定を説明しました。
次は、Apache設定ディレクティブの確認方法について説明します。
Apache設定ディレクティブの確認方法
Apacheには、ディレクティブが数多く存在しています。
その一覧は、次のページで確認できます。
ディレクティブ一覧 – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/mod/directives.html
内容やデフォルト値は、上記ページから確認できます。
しかし、利用中のApacheにおける設定値の確認はなかなか大変です。
例えば、「ServerSignature」の説明を確認してみましょう。
コンテキスト部分に注目です。
- サーバ設定ファイル
- バーチャルホスト
- ディレクトリ
- .htaccess
「ServerSignature」は、全部で4つの箇所で設定できます。
ここでは、Apache起動時のオプションによる設定などは省きます。
あくまで、設定ファイルに記載されているモノを対象にします。
この場合、.htaccess以外の設定ファイルはある場所に集約しています。
ある場所とは、「ServerRoot」です。
Apache起動時の設定の際に、「ServerRoot」を確認できています。
ServerRoot: "/etc/apache2"
Apacheの設定ファイルの場所については、次の記事で説明しています。
詳細について知りたい場合は、上記の記事を参考にしてください。
まとめると、「/etc/apache2」以下の設定ファイルを検索すればいいのです。
コマンドで表現すると、以下のコマンドとなります。
find /etc/apache2 -type f -name "*.conf" | xargs grep "ディレクティブ"
なお、.htaccessを対象にする場合は以下で対応できるでしょう。
find DocumentRootのパス -type f -name ".htaccess" | xargs grep "ディレクティブ"
DocumentRootもApache起動時の設定で確認できます。
Main DocumentRoot: "/var/www/html"
以上、Apache設定ディレクティブの確認方法を説明しました。
最後は、ServerSignatureを確認・変更してみましょう。
ServerSignatureの確認・変更
改めてServerSignatureの説明を確認しましょう。
機能としては、次の項目(下線)の表示を制御しています。
Onなら表示、Offなら非表示です。
Emailの場合は、Onで情報量が多くなります。
そして、デフォルト値は「Off」ということです。
ここで言う「デフォルト」については、後で説明します。
確認するには、以下のコマンドを利用します。
find /etc/apache2 -type f -name "*.conf" | xargs grep "ServerSignature"
上記コマンドを実行した結果は、以下。
$ find /etc/apache2 -type f -name "*.conf" | xargs grep "ServerSignature" /etc/apache2/conf-available/security.conf:#ServerSignature Off /etc/apache2/conf-available/security.conf:ServerSignature On /etc/apache2/conf-available/localized-error-pages.conf:# ServerAdmin email address regardless of the setting of ServerSignature.
「security.conf」に「ServerSignature」が設定されていることを確認できます。
/etc/apache2/conf-available/security.conf
デフォルトでは、「On」が設定されています。
もちろん、インストール以降にこのファイルを触っていません。
「あれ、デフォルトはOffではないの?」
このように思う方がいると思います。
実際、私は思いました。
以下で言う「デフォルト」は、ディレクティブ自体が何も設定されてない場合を指します。
つまり、「ServerSignature」を検索しても何も出てこない場合のことを言います。
出てきてもコメントアウトされていたら、未設定と同じです。
それでは、「ServerSignature」を未設定の状態にしてみましょう。
すべてコメントアウトにしています。
この変更を反映するためには、Apacheの再起動が必要です。
$ sudo systemctl restart apache2
「ServerSignature」の変更を確認するために、403エラーを起こします。
何も表示されないようになりました。
デフォルトの「Off」が設定されているということですね。
ServerSignatureの値について説明しました。