私は、バックエンドがリクエストをプロキシするために、axios とリクエストを備えた node express サーバーを API 呼び出しで使用していますが、サーバーではなくユーザーの詳細を送信したいと考えています。
例えば:
私のウェブサイト -> ユーザーが画像をクリック -> サーバー A に get が呼び出される -> サーバーが別のサーバー B を呼び出してデータを取得します。
これで、B サーバーは、IP、地理、ISP などの A サーバーの情報を認識できるようになります。B サーバーがユーザーが Web サイトから直接このサーバーを呼び出したと認識できるように、このようなユーザー データを A サーバーに転送するにはどうすればよいでしょうか。
答え1
まず、「geo」や「isp」で言及している多くの情報はすべて IP アドレス自体から派生したものであることを理解することが重要です。つまり、その情報を転送するということです。
設定に関する情報はあまり記載されていませんが、考えられる設定を 2 つ記載しました。
1. リバースプロキシ
サーバーAはリバースプロキシであり、すべてのリクエストをサーバーBにプロキシしますnginx
。この場合、Forwarded header
非常によく説明されているを使用します。ここ。
コードスニペットの例:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_pass http://server_b;
}
2. アプリケーション層 サーバー A は、バックエンドでサーバー B にリクエストを送信する Web サイト (またはその他のアプリケーション) をホストします。
この場合、アプリケーションの正確な動作はわかりませんが、何らかの方法で訪問者の IP をリクエスト ペイロードに含めることをお勧めします。
基本的な例として、サーバー A で PHP を使用している場合 (このフォームはサーバー B に渡される前にサーバー A に送信されました):
<input type="hidden" id="visitorIP" name="visitorIP" value="<?php $_SERVER['REMOTE_ADDR']?>">