您好,登錄后才能下訂單哦!
nginx中proxy_set_head怎么設置頭部信息,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
導讀 | 反向代理服務器是一種代理服務器,用于管理從外部網絡到內部網絡的連接或任何特定請求。它保護、路由和管理從外部網絡到內部網絡、Web服務器或專用網絡的流量。 |
nginx作為web服務器一個重要的功能就是反向代理。
當然你也可以使用nginx配置正向代理,本是介紹如何配置nginx的反向代理。
nginx反向代理的指令不需要新增額外的模塊,默認自帶proxy_pass指令,只需要修改配置文件就可以實現反向代理。
$proxy_add_x_forwarded_for $http_x_forwarded_for
這兩個的變量的值的區別,就在于,proxy_add_x_forwarded_for 比http_x_forwarded_for 多了一個$remote_addr的值,但是$remote_addr 只能獲取到與服務器本身直連的上層請求ip,所以設置$remote_addr一般都是設置第一個代理上面;但是問題是,有時候是通過cdn訪問過來的,那么后面web服務器獲取到的,永遠都是cdn 的ip 而非真是用戶ip,那么這個時候就要用到X-FORward—for了,這個變量的意思,其實就像是鏈路反追蹤,從客戶的真實ip為起點,穿過多層級的proxy ,最終到達web 服務器,都會記錄下來,所以在獲取用戶真實ip的時候,一般就可以設置成,proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 這樣就能獲取所有的代理ip 客戶ip。
在打印log 的時候
$http_x_real_ip|$remote_addr
就是 用戶的真是ip
配置如下
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
還有一種情況就是,客戶在經過cdn請求的時候,本來$proxy_add_x_forwarded_for這里記錄的值都全部都包括,但是,當你需要取值的時候,會發現,即便用排除代理ip模塊。
set_real_ip_from 100.0.0.0/8;(這里是已知的代理ip) real_ip_header X-Forwarded-For; real_ip_recursive on;
X-Forwarded-For
里依然有多個ip,這個時候直接取值$http_x_real_ip 就好了,但是前提條件是,cdn 那邊也設置了X-forward,不然,你這邊獲取的你認為是用戶的ip 其實是cdn的ip。
看完上述內容,你們掌握nginx中proxy_set_head怎么設置頭部信息的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。