最近有一個需求是需要透過一台中轉伺服器轉送TCP請求到真實的後端伺服器,但現在遇到的問題是後端伺服器沒辦法取得到使用者的真實IP。
請注意是TCP連接,不是HTTP,是NGINX的stream模組裡的功能,網上查了很多資料,NGINX官方文檔說是可以解決的,但是沒有給出詳細的操作指導,希望已經實現的朋友可以幫忙解答下,另外問下LVS做負載的話,不在同一網段的機器,後端伺服器是否可以取得到客戶端真實IP?可以的話麻煩給下相關的文章連結。
參考文件:
https://nginx.org/en/docs/str...
https://www.nginx.com/blog/tc...
LVS在nat或fullnat模式下,預設都是不能取得到真實IP的。
阿里的fullnat可以透過TCP Option傳遞真實IP給後端。
nginx的stream模組可以透過 proxy protocol https://www.haproxy.org/downl... 來傳遞真實IP。
兩者都有一個共同點:
後端需要修改程式碼才能取得這個IP。