[Apache] Logフォーマット

/etc/httpd/httpd.conf

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
  • %h: リモートホスト。つまりApacheにアクセスしてきたクライアントPCのIPアドレスとなります。
  • %l: リモートログ名。mod_identモジュールがロードされており、IdentityCheckディレクティブがOnになっている場合のみ表示されます。それ以外の場合は『-』と表示されます。
    %u リモートユーザ。
    %t リクエストを受信した時刻。
    %r リクエストの最初の行。
    %>s %sはステータスコード。内部でリダイレクトされた場合でも元々のステータスコードを出力。%>sはリダイレクトされた場合最後のステータスコードを出力。
    %b HTTPヘッダを除くレスポンスのバイト数。0バイトの場合は『-』と表示されます。
    %{Referer}i サーバが受信したリクエストヘッダのReferer。
    %{User-Agent}i サーバが受信したリクエストヘッダのUser-Agent。

ReverseProxy配下でDNSアクセス制御をかけると、Apacheが403となる

他ドメインのDNSアクセス制御

他ドメインのDNSをアクセス制御する場合、下記を設定する。
VirtualHostを設定している場合は、上記設定をしないと他ドメインのネームサーバーに同じドメインが指定された場合、他ドメインが同じサーバを向き、ドメイン以外の全てが同じ表示となってしまう。
Googleのペナルティを受ける可能性もある。

/etc/httpd/conf/httpd.conf

<VirtualHost *:80>
     ServerName dummy
     <Location />
        Order deny,allow
        Deny from all
     </Location>
</VirtualHost>

アクセス制御によるエラー

/var/log/httpd/error_log

client denied by server configuration: /var/www/dvh/xxx, referer: http://yyy.com
  • Aサーバ: http://example.com
  • Bサーバ: http://example.com/xxx

上記のようにプロキシサーバを経由し、ディレクトリでサーバ間を振り分けている場合、/xxx側ではApacheがエラーとなり403 forbidden となる。
この場合は、/xxx側のサーバでは、DNSアクセス制御は不要である。