摘要:前后端分離之后,采用作為靜態服務器,并通過反向代理的方式實現接口跨域的方式,在降低開發成本的同時也帶來了諸多問題,例如客戶端真實的獲取。
前后端分離之后,采用nginx作為靜態服務器,并通過反向代理的方式實現接口跨域的方式,在降低開發成本的同時也帶來了諸多問題,例如客戶端真實IP的獲取。
在一些特殊場景下,比如風控和支付流程,往往需要獲取用戶的ip信息,但是nginx反向代理在實現跨域的同時,也徹底地改變了服務端請求來源,隔離了用戶和服務端的連接,如下圖
用戶訪問前端頁面"https://a.test.com/index/html",調用支付接口的時候,支付接口的地址是"https://a.test.com/goPay",然后由nginx反向代理到server端的"https://b.test.com/goPay"。這個時候對于server端來說,他接到的請求都是來自nginx服務器的,此時server 端默認獲取到的ip則是nginx服務器的ip。這并不是我們想要的。這個時候就需要添加如下配置:
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-Port $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
三個header分別表示:
X-Real-IP 客戶端或上一級代理ip X-Real-Port 客戶端或上一級端口 X-Forwarded-For 包含了客戶端和各級代理ip的完整ip鏈路
其中X-Real-IP是必需的,后兩項選填。當只存在一級nginx代理的時候X-Real-IP和X-Forwarded-For是一致的,而當存在多級代理的時候,X-Forwarded-For 就變成了如下形式
X-Forwarded-For: 客戶端ip, 一級代理ip, 二級代理ip...
在獲取客戶端ip的過程中雖然X-Forwarded-For是選填的,但是個人建議還是保留這,以便出現安全問題的時候,可以根據日志文件回溯來源。
有個坑~除了上述配置部分網友還給了一個host的header
proxy_set_header Host $host;
首先這個header并不是必需的,其次這個header host和proxy_pass轉發產生的hostheader會出現沖突,導致接口502的情況。但是這個配置更新后,nginx重啟包括使用nginx -t進行測試也不會報錯,這個值得大家注意一下。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40086.html
摘要:最近寫了一些關于前后端分離項目之后,跨域相關方案的基本原理和常見誤區的帖子,主要包括和反向代理。反向代理此時后端相當于不跨域,和正常請求一致,無需額外配置。 最近寫了一些關于前后端分離項目之后,跨域相關方案的基本原理和常見誤區的帖子,主要包括CORS和Nginx反向代理。這兩種方案項目中都有在用,各有優缺,關于具體使用哪種方案,大家的觀點也不大一致,本文主要就此展開一下,從前后端及服務...
摘要:總結在作為反向代理的架構中,的其他語言也是類似的名稱拿到的將會是代理的地址。本意就是遠程的地址,是代理層,轉發請求到,獲取到的遠程地址實際上是反向代理服務器,這是符合協議規則的。 nginx反向代理后,在應用中取得的ip都是反向代理服務器的ip,取得的域名也是反向代理配置的url的域名,解決該問題,需要在nginx反向代理配置中添加一些配置信息,目的將客戶端的真實ip和域名傳遞到應用程...
摘要:總結在作為反向代理的架構中,的其他語言也是類似的名稱拿到的將會是代理的地址。本意就是遠程的地址,是代理層,轉發請求到,獲取到的遠程地址實際上是反向代理服務器,這是符合協議規則的。 nginx反向代理后,在應用中取得的ip都是反向代理服務器的ip,取得的域名也是反向代理配置的url的域名,解決該問題,需要在nginx反向代理配置中添加一些配置信息,目的將客戶端的真實ip和域名傳遞到應用程...
摘要:無論這個連接是外部主動建立的,還是內部建立的。協議有表示層數據的表示安全壓縮。在整個發展過程中的所有思想和著重點都以一種稱為的文檔格式存在。 部署基礎知識url:協議://網站地址:端口(/)路徑地址?參數eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務器 80端口:找服務器上提供服務的應用 nginx uri:/ab...
閱讀 1654·2019-08-30 13:04
閱讀 2205·2019-08-30 12:59
閱讀 1764·2019-08-29 18:34
閱讀 1857·2019-08-29 17:31
閱讀 1255·2019-08-29 15:42
閱讀 3530·2019-08-29 15:37
閱讀 2857·2019-08-29 13:45
閱讀 2771·2019-08-26 13:57