2017-03-02 18 views
0

これで、nginxの前にVarnish 4(これまで3つを使用していました)の新規インストールでクライアントIPアドレスを取得しようとしています。 AWSロードバランサの背後にあり、ワニスの下でログに記録するクライアントのIPアドレスを取得できないようです。クライアントIPアドレスの代わりに4ロギングプロキシ/ロードバランサ

は、以前は3で、我々は)sub_recv(の上部にこれを使用する:別のサーバー上の

std.collect(req.http.x-forwarded-for); 
if (req.http.X-Forwarded-For) 
{ 
    set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip; 
} else 
{ 
    set req.http.X-Forwarded-For = client.ip; 
} 

もこの:

std.collect(req.http.x-forwarded-for); 
if (req.http.x-forwarded-for) { 
     std.log("ip:" + req.http.x-forwarded-for); 
} else { 
     std.log("ip:" + client.ip); 
} 

これらのどちらもが、しかし、ワニス4で作業しています最初のコードブロックは本質的には私が読んだことからこの時点でワニスにコード化されています。 私はまた、無無駄にこれを試してみました:

remove req.http.X-Forwarded-For; 
set req.http.X-Forwarded-For = client.ip; 

この最後の項目は、VCLにまだあるものです。私はいくつかの無関係なセクションを削除して、pastbin(http://pastebin.com/Q1nCprxL)にvcl全体を入れました。 x-forwarded-forはそこにあり、ワニスは単純に一番左のIPアドレスではなく一番右のIPアドレスを記録しています。

X-Forwarded-For: 209.53.112.36, 172.25.10.228 

答えて

0

これらのメソッドはすべて動作するはずです。あなたが実際に使っているものはどれですか?私の問題への答えは、3と4の間の差異ではなく、lack of a return(hash) at the end of vcl_recv()(X-Forwarded-Forの最後のIPを除いてすべてを消去する可能性のあるバグ)であることが判明しました。

関連する問題