検索

ホームページ  >  に質問  >  本文

負荷分散 - NGINX は TCP をバックエンド サーバーに転送しますが、バックエンド サーバーはどのようにしてユーザーの実際の IP アドレスを取得しますか? NGINX サーバーとバックエンド サーバーが同じネットワーク セグメント内にありません

最近、TCP リクエストをトランジット サーバー経由で実際のバックエンド サーバーに転送する必要がありますが、現在発生している問題は、バックエンド サーバーがユーザーの実際の IP を取得できないことです。

これは HTTP ではなく TCP 接続であることに注意してください。これは NGINX のストリーム モジュールの関数です。オンラインで多くの情報を確認しました。NGINX の公式ドキュメントには、解決できると記載されています。ただし、詳細な操作ガイドは提供されていません。既に実装している友人が質問に回答してくれることを願っています。また、LVS が負荷として使用されている場合、バックエンド サーバーはマシンがクライアントの実際の IP を取得できますか?同じネットワークセグメント内にないのでしょうか?可能であれば、関連記事へのリンクをお願いします。

参考ドキュメント:
https://nginx.org/en/docs/str...
https://www.nginx.com/blog/tc...

高洛峰高洛峰2752日前1879

全員に返信(1)返信します

  • 黄舟

    黄舟2017-06-16 09:21:41

    LVS は、デフォルトでは nat または fullnat モードで実際の IP を取得できません。

    Alibaba の fullnat は、TCP オプションを通じて実際の IP をバックエンドに渡すことができます。

    nginx のストリーム モジュールは、プロキシ プロトコル https://www.haproxy.org/downl... を通じて実際の IP を渡すことができます。

    どちらにも共通点が 1 つあります:

    この IP を取得するには、バックエンドでコードを変更する必要があります。

    返事
    0
  • キャンセル返事