0

特定のケースでワニスが中間プロキシ IP またはパブリック IP を送信しないという問題に直面しています。シナリオは次のとおりです。

  • 一部のホテル/会社では squid プロキシが構成されており、インターネットのすべてのトラフィックが Squid 経由でルーティングされます。

  • 私の会社のサイトにアクセスするユーザーは、最初にロード バランサーにアクセスし、次に Varnish、次に Apache にアクセスします

  • Apache は mod_geoip で構成されています。私のサイトのコードは、IP アドレスに基づいて国のリダイレクトを行います。

問題 :

  • ユーザー (その squid プロキシの背後) がロード バランサーの背後にある私の会社の Web サイトにアクセスする場合 -> VARNISH -> Apache - ここで、Apache は内部 IP (彼のプライベート IP) とロード バランサーの内部 IP のみを X-forwarded-for として取得するため、IP ベースリダイレクト失敗!

Apache ログ (X-Forwarded-IP をログに記録するように構成) では、ユーザーのプライベート IP と、次にマイ ロード バランサーのプライベート IP が表示されます。

172.10.5.10、LoadBalancerIP - - [.......]

  • 同じユーザーが Varnish を持たない別のサイトにアクセスすると、Load Balancer -> Apache にヒットします。ここで、apache はユーザーのプライベート IP とユーザーのパブリック IP を X-forwarded-for として取得し、IP ベースの国のリダイレクトは正常に機能します。

Apache ログ (X-Forwarded-IP をログに記録するように構成されています) では、ユーザーのプライベート IP と彼のパブリック IP もログに記録されていることがわかります。

172.10.5.10、PublicIP - - [.......]

私のワニス構成は以下の通りです。

       if (req.restarts == 0) {
                   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;
                   }
           }

PS: 見つけたすべてのリンクを既に Google で検索しており、すべてのリンクから次の Varnish Config が得られます

今のところ、この問題を解決するには、ワニスをバイパスする必要があり、ウェブサイトのトラフィックが Apache に直接ヒットするようになりましたが、キャッシュと高速配信からサーバー コンテンツにワニスを戻す必要があります。

誰かがこの問題を解決する方法を教えてくれれば幸いです。

ありがとう!

4

2 に答える 2