71.nginx請求頭配置


1.nginx請求頭配置:

1.nginx proxy_set_header設置,自定義header
在實際應用中,我們可能需要獲取用戶的ip地址,比如做異地登陸的判斷,或者統計ip訪問次數等,通常情況下我們使用
request.getRemoteAddr()就可以獲取到客戶端ip,但是當我們使用了nginx作為反向代理后,使用request.getRemoteAddr()
獲取到的就一直是nginx服務器的ip的地址,那這時應該怎么辦?
   
而且有些場景做了一些客戶端瀏覽器url的判斷,比如,瀏覽器輸入baidu.com是可以訪問到百度的,但是輸入!@#¥*.com有可能
也是可以訪問到百度,但是百度內部並不希望以這種方式訪問(或者防止一些網絡攻擊),這時候應該怎么辦?
其實nginx允許重新定義或者添加發往后端服務器的請求頭。value可以包含文本、變量或者它們的組合。

2.默認情況下,有兩個請求頭會被重新定義:
    proxy_set_header Host $proxy_host; //默認會將后端服務器的HOST填寫進去
    proxy_set_header Connection close;

3.我們可以通過設置nginx配置去調整轉發報文的頭部:
    proxy_set_header X-real-ip $remote_addr;
    其中這個X-real-ip是一個自定義的變量名,名字可以隨意取,這樣做完之后,用戶的真實ip就被放在X-real-ip這個變量里了
,然后,在web端可以這樣獲取:request.getHeader("X-real-ip")

4.proxy_set_header X-Forwarded-For $remote_addr;
    真實的顯示出客戶端原始ip。(nginx更多使用這條配置,X-Forwarded-For為默認字段,以下介紹均為默認字段)

5.proxy_set_header Host $http_host;
    如果想獲取客戶端訪問的頭部,可以這樣來設置。
    但是,如果客戶端請求頭中沒有攜帶這個頭部,那么傳遞到后端服務器的請求也不含這個頭部。

6.proxy_set_header Host $host;
    這個配置相當於上面配置的增強。
    它的值在請求包含"Host"請求頭時為"Host"字段的值,在請求未攜帶"Host"請求頭時為虛擬主機的主域名。

7.proxy_set_header Host $host:$proxy_port;
    服務器名和后端服務器的端口(訪問端口)一起傳送。
    proxy_set_header <<<*>>> "";
    請求頭的值為空,請求頭將不會傳送給后端服務器。

8.proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    在默認情況下經過proxy轉發的請求,在后端看來遠程地址都是proxy端的ip 。
    添加這條配置之后:
    意思是增加一個$proxy_add_x_forwarded_for到X-Forwarded-For里去,注意是增加,而不是覆蓋,當然由於默認的
X-Forwarded-For值是空的,所以我們總感覺X-Forwarded-For的值就等於$proxy_add_x_forwarded_for的值,實際上當你搭建
兩台nginx在不同的ip上,並且都使用了這段配置,那你會發現在web服務器端通過request.getHeader("X-Forwarded-For")獲得
的將會是客戶端ip和第一台nginx的ip。
    在第一台nginx中,使用   

9.proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    現在的$proxy_add_x_forwarded_for變量的"X-Forwarded-For"部分是空的,所以只有$remote_addr,而$remote_addr的
值是用戶的ip,於是賦值以后,X-Forwarded-For變量的值就是用戶的真實的ip地址了。
    到了第二台nginx,也使用   

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
    現在的$proxy_add_x_forwarded_for變量,
    X-Forwarded-For部分包含的是用戶的真實ip,
    $remote_addr部分的值是上一台nginx的ip地址,
    於是通過這個賦值以后現在的X-Forwarded-For的值就變成了"用戶的真實ip,第一台nginx的ip"。。

轉載:

https://www.cnblogs.com/liuxia912/p/10943970.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM