使用可能なディレクティブ一覧

Apache httpdにおいて表題の件。知らなかったのでメモしておく。

■ 環境

  • Apache httpd 2.4.27
  • Amazon Linux

■ -L

ヘルプを見ていて気がついた下記のオプション。

$ httpd -h
  :
  -L                 : list available configuration directives
  :
$

試しにやってみた。

$ httpd -L
<Directory (core.c)
    Container for directives affecting resources located in the specified directories
    Allowed in *.conf only outside <Directory>, <Files>, <Location>, or <If>
  :
SecHashParam (mod_security2.c)
    Set Hash parameter
    Allowed in *.conf anywhere
$

ズラズラと大量にディレクティブが表示されたが、どのモジュールで使用可能になっているのかも一緒に表示してくれている。

この環境はModSecurityもインストールしているので、”mod_security2.c“も含まれた形になっていた。

以上。

ModSecurity requires mod_unique_id to be installed.

ModSecurityを入れた環境で、表題のエラーが出ていた。

■ 環境

  • ModSecurity 2.9.2
  • Apache httpd 2.4.27
  • Amazon Linux

■ error_log

下記のようなメッセージが表示されている。

[Mon Aug 08 19:17:11.386399 2017] [:error] [pid 4449] ModSecurity: ModSecurity requires mod_unique_id to be installed.

mod_unique_id“がインストールされていないようだ。

ファイルの存在確認。

$ ls -l /etc/httpd/modules/mod_unique_id.so
-rwxr-xr-x 1 root root 10224 Aug  3 03:03 /etc/httpd/modules/mod_unique_id.so
$

インストールはされている様子。設定ファイルを確認する。

下記ファイルに記載されていた。

/etc/httpd/conf.modules.d/00-base.conf

ただしコメントアウトされていた。

# LoadModule unique_id_module modules/mod_unique_id.so

今回は特に問題がない気がするので、この行をコメントインして終了とする。

`httpd`を再起動して前述のエラーメッセージは出力されなくなった。

以上。

特定のpathにIP制限をかける

httpdにおいて表題の通り。

■ 環境

  • Apache httpd 2.4.25
  • AmazonLinux

■ IP制限

アクセス元のIPを下記のように制限することができる。

<Directory /var/www/html/www.example.com/path1>
  Order Deny,Allow
  Allow from XXX.XXX.XXX.XX1
  Allow from XXX.XXX.XXX.XX2
  Allow from XXX.XXX.XXX.XX3
  Deny from all
</Directory>

上記設定では、3つのIP以外からのアクセスは”403“のステータスが返される。

ちょっとしたものを置いておくけど、関係ない人には見せたくない時に便利である。

以上。

NameVirtualHostはもういらない

httpdにおいて表題の通り。久しぶりに設定をしたら怒られた。

■ 環境

  • Apache httpd 2.4.25
  • Amazon Linux

■ NameVirtualHost

core – Apache HTTP version 2.4
http://httpd.apache.org/docs/current/ja/mod/core.html#namevirtualhost

ここにもちゃんと”NameVirtualHost“が書かれているのだが、実際に書き加えて`configtest`をしてみると下記のようなメッセージが表示された。

$ sudo service httpd configtest
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/www.example.com.conf:8
Syntax OK
$

次のリリースでは削除されるのか。ドキュメントにも書いておいてくれれば良いのにと思う。

このメッセージの通り”NameVirtualHost“は削除し再起動したが、設定通りに名前ベースのVirtualHostが効いている。

以上。

ELBのヘルスチェックをログに記載しない (Apache)

表題の通り。以前はnginxでの方法を書いていたが今回はapacheである。

■ 環境

  • Apache httpd 2.4.25
  • Amazon Linux

■ httpd.conf

下記を追記した。

SetEnvIf User-Agent "ELB-HealthChecker/2\.0" nolog

また”CustomLog“ディレクティブで下記のように編集した。

CustomLog "logs/www.example.com/access.log" combined env=!nolog

これでELBのヘルスチェックログが出力されないようになった。

以上。

■ 関連

ELBのヘルスチェックログを出力しない