搜尋

首頁  >  問答  >  主體

負載平衡 - NGINX做TCP轉送到後端伺服器,後端伺服器如何取得使用者的真實IP位址? NGINX伺服器和後端伺服器不在同一個網段

最近有一個需求是需要透過一台中轉伺服器轉送TCP請求到真實的後端伺服器,但現在遇到的問題是後端伺服器沒辦法取得到使用者的真實IP。

請注意是TCP連接,不是HTTP,是NGINX的stream模組裡的功能,網上查了很多資料,NGINX官方文檔說是可以解決的,但是沒有給出詳細的操作指導,希望已經實現的朋友可以幫忙解答下,另外問下LVS做負載的話,不在同一網段的機器,後端伺服器是否可以取得到客戶端真實IP?可以的話麻煩給下相關的文章連結。

參考文件:
https://nginx.org/en/docs/str...
https://www.nginx.com/blog/tc...

高洛峰高洛峰2752 天前1880

全部回覆(1)我來回復

  • 黄舟

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

    LVS在nat或fullnat模式下,預設都是不能取得到真實IP的。

    阿里的fullnat可以透過TCP Option傳遞真實IP給後端。

    nginx的stream模組可以透過 proxy protocol https://www.haproxy.org/downl... 來傳遞真實IP。

    兩者都有一個共同點:

    後端需要修改程式碼才能取得這個IP。

    回覆
    0
  • 取消回覆