特定の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のヘルスチェックログを出力しない

ELB配下のApacheでremote_ipを使う

表題の通り。メモ。

■ 環境

  • Apache httpd 2.4.25
  • Amazon Linux
  • AWS

■ remote_ip

ELB等、本来のアクセス元が”X-Forwarded-For“に入っている場合の対処。

mod_remoteip – Apache HTTP Server Version 2.4
https://httpd.apache.org/docs/current/mod/mod_remoteip.html

これが最近はデフォルトで入っている。

httpd.conf“の下記行を追記する。

RemoteIPHeader X-Forwarded-For

また下記の行を書き換えれば良い。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

%h“の箇所を”%a“にすればいける。自身は”combined“とは別名で”%a“に書き換えたものを設定しておいた。お手軽だ。

以上。

ディレクトリリスティングを無効

Apacheにおいて表題の通り。

■ 環境

  • Apache httpd 2.4.25
  • Amazon Linux

■ ディレクトリリスティング

index.html“等がないディレクトリにアクセスすると下記のように返ってきていた。

しばらくWordPress等しか使用していなかったので、デフォルト設定ではこういったアクセスでファイルの一覧等が表示されるというのをすっかり忘れていた。WordPressでは404系のエラー画面を勝手に表示してくれたりするので…。

というわけで対応する。

$ vi /etc/httpd/conf/httpd.conf

該当の設定は下記の箇所である。

<Directory "/var/www/html">
  # Options Indexes FollowSymLinks
  Options FollowSymLinks

コメントアウトした行を下の行に変更した。”Indexes“を削除しただけである。

設定変更を反映する。

$ sudo service httpd configtest
Syntax OK
$
$ sudo service httpd reload
Reloading httpd:                     [  OK  ]
$

同じURLにアクセスしても下記のようになった。

以上。