負載均衡後獲取客戶端真實ip

2021-09-02 02:09:34 字數 1244 閱讀 9883

string ip3=request.getremoteaddr(); 如果沒有配負載均衡,則request.getremoteaddr() 獲取的就是真實客戶端ip,如果配了nginx負載均衡,則request.getremoteaddr() 獲取的是負載均衡nginx伺服器的ip,而不是真實客戶端ip。

那麼問題來了,經過nginx負載均衡後,如何獲取客戶端真實ip?

location /

**中,header中使用「x-forwarded-for」欄位或「x-real-ip」字段獲取client真實 ip。

以乙個servlet為例:

​​​​​​​    protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception
注意:從header中獲取欄位的時候,是不區分大小寫的。所以 request.getheader("x-forwarded-for")和request.getheader("x-forwarded-for")以及request.getheader("x-forwarded-for")效果是一樣的。

如果通過了多級反向**的話,x-forwarded-for的值不止乙個,而是一串ip值,此時取第乙個ip位址就可以了,第乙個ip代表客戶端真實ip,比如:

分析:從csn開始,每經過乙個**做一次**,x_forwarded_for就會在後面追加乙個**ip。請求到達nginx時,x_forwarded_for已經變成乙個以逗號分隔的ip串,並且以**順序排序。

nginx的內建變數remote_addr(

舉例:如圖,我經過兩層**,最終到達後端真實業務伺服器:

瀏覽器訪問結果:

獲取客戶端真實ip

很多時候我們需要獲取客戶端的訪問ip,ip位址合法驗證 long sprintf u ip2long ip ip long array ip,long array 0.0.0.0 0 return ip type 一 如果沒有使用 伺服器,remote addr 客戶端iphttp x forwar...

獲取客戶端真實IP

server http x real ip nginx 模式下,獲取客戶端真實ip server http client ip 端的 有可能存在,可偽造 server http x forwarded for 使用者是在哪個ip使用的 有可能存在,也可以偽造 server http cdn src ...

獲取客戶端真實IP

在jsp裡,獲取客戶端的ip位址的方法是 request.getremoteaddr 這種方法在大部分情況下都是有效的。但是在通過了 apache,nagix等反向 軟體就不能獲取到客戶端的真實ip位址了。如果使用了反向 軟體,用 request.getremoteaddr 經過 以後,由於在客戶端...