2011-06-17 17:40 追記
kazeburoさんからご指摘をいただき,一部追記しました.ありがとうございます!
kazeburoさんからご指摘をいただき,一部追記しました.ありがとうございます!
nginx とかでバックエンドのplackなアプリケーションにリバースプロキシするスタイルが,ようやく個人的にも定番になってきた今日この頃ですが,そういえば,アクセスログの冒頭に記録されるIPアドレスが「127.0.0.1」のままでした...orz
plackup --access-log=/path/to/access_log
のようにせずに,psgiファイルで Log::Dispatch と Plack::Middleware::AccessLog とを明示的に利用し,また,クライアントのIPアドレスを記録するように書き換えたので,そのメモです.
use strict; use Log::Dispatch; use Plack::Builder; my $logdir = '...'; my $logger = Log::Dispatch->new( outputs => [ [ 'File', min_level => 'debug', max_level => 'debug', filename => "${logdir}/access_log", mode => '>>', ], ], ); builder { ... enable 'AccessLog', format => "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"", logger => sub { $logger->debug( @_ ) }; ... }; |
2011-06-17 17:40 追記
kazeburoさんから Plack::Middleware::ReverseProxy の存在をご指摘いただきました.(あぁ,Middlewareをさがすという頭がスッカリ抜けていました><)
これを利用すると,builder { ... }
の部分は,次のように書けます.
builder { ... enable_if { $_[0]->{REMOTE_ADDR} eq '127.0.0.1' } 'ReverseProxy'; enable 'AccessLog', logger => sub { $logger->debug( @_ ) }; ... }; |
シンプルになりました!
参考
- Log::Dispatch – search.cpan.org
- Plack::Middleware::AccessLog – search.cpan.org
- mod_log_config – Apache HTTP サーバ
- X-Forwarded-For – Wikipedia, the free encyclopedia
こちらもあわせてどうぞ
最近の閲覧数
- None Found