摘要:前后端分離之后,采用作為靜態(tài)服務(wù)器,并通過反向代理的方式實現(xiàn)接口跨域的方式,在降低開發(fā)成本的同時也帶來了諸多問題,例如客戶端真實的獲取。
前后端分離之后,采用nginx作為靜態(tài)服務(wù)器,并通過反向代理的方式實現(xiàn)接口跨域的方式,在降低開發(fā)成本的同時也帶來了諸多問題,例如客戶端真實IP的獲取。
在一些特殊場景下,比如風(fēng)控和支付流程,往往需要獲取用戶的ip信息,但是nginx反向代理在實現(xiàn)跨域的同時,也徹底地改變了服務(wù)端請求來源,隔離了用戶和服務(wù)端的連接,如下圖
用戶訪問前端頁面"https://a.test.com/index/html",調(diào)用支付接口的時候,支付接口的地址是"https://a.test.com/goPay",然后由nginx反向代理到server端的"https://b.test.com/goPay"。這個時候?qū)τ趕erver端來說,他接到的請求都是來自nginx服務(wù)器的,此時server 端默認(rèn)獲取到的ip則是nginx服務(wù)器的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是必需的,后兩項選填。當(dāng)只存在一級nginx代理的時候X-Real-IP和X-Forwarded-For是一致的,而當(dāng)存在多級代理的時候,X-Forwarded-For 就變成了如下形式
X-Forwarded-For: 客戶端ip, 一級代理ip, 二級代理ip...
在獲取客戶端ip的過程中雖然X-Forwarded-For是選填的,但是個人建議還是保留這,以便出現(xiàn)安全問題的時候,可以根據(jù)日志文件回溯來源。
有個坑~除了上述配置部分網(wǎng)友還給了一個host的header
proxy_set_header Host $host;
首先這個header并不是必需的,其次這個header host和proxy_pass轉(zhuǎn)發(fā)產(chǎn)生的hostheader會出現(xiàn)沖突,導(dǎo)致接口502的情況。但是這個配置更新后,nginx重啟包括使用nginx -t進(jìn)行測試也不會報錯,這個值得大家注意一下。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40086.html
摘要:一個網(wǎng)頁從我們輸入網(wǎng)址到打開經(jīng)歷了以下步驟。如果沒有或記錄已經(jīng)過期,則向域名解析服務(wù)器發(fā)送解析請求。服務(wù)器收到請求,產(chǎn)生響應(yīng),并將網(wǎng)頁發(fā)送給負(fù)載均衡服務(wù)器。負(fù)載均衡服務(wù)器將網(wǎng)頁傳遞給鏈處理,之后發(fā)回給我們的瀏覽器。 一個網(wǎng)頁從我們輸入網(wǎng)址到打開經(jīng)歷了以下步驟。 showImg(https://segmentfault.com/img/bVbpfj2?w=232&h=555); DNS...
摘要:最近寫了一些關(guān)于前后端分離項目之后,跨域相關(guān)方案的基本原理和常見誤區(qū)的帖子,主要包括和反向代理。反向代理此時后端相當(dāng)于不跨域,和正常請求一致,無需額外配置。 最近寫了一些關(guān)于前后端分離項目之后,跨域相關(guān)方案的基本原理和常見誤區(qū)的帖子,主要包括CORS和Nginx反向代理。這兩種方案項目中都有在用,各有優(yōu)缺,關(guān)于具體使用哪種方案,大家的觀點也不大一致,本文主要就此展開一下,從前后端及服務(wù)...
摘要:總結(jié)在作為反向代理的架構(gòu)中,的其他語言也是類似的名稱拿到的將會是代理的地址。本意就是遠(yuǎn)程的地址,是代理層,轉(zhuǎn)發(fā)請求到,獲取到的遠(yuǎn)程地址實際上是反向代理服務(wù)器,這是符合協(xié)議規(guī)則的。 nginx反向代理后,在應(yīng)用中取得的ip都是反向代理服務(wù)器的ip,取得的域名也是反向代理配置的url的域名,解決該問題,需要在nginx反向代理配置中添加一些配置信息,目的將客戶端的真實ip和域名傳遞到應(yīng)用程...
摘要:總結(jié)在作為反向代理的架構(gòu)中,的其他語言也是類似的名稱拿到的將會是代理的地址。本意就是遠(yuǎn)程的地址,是代理層,轉(zhuǎn)發(fā)請求到,獲取到的遠(yuǎn)程地址實際上是反向代理服務(wù)器,這是符合協(xié)議規(guī)則的。 nginx反向代理后,在應(yīng)用中取得的ip都是反向代理服務(wù)器的ip,取得的域名也是反向代理配置的url的域名,解決該問題,需要在nginx反向代理配置中添加一些配置信息,目的將客戶端的真實ip和域名傳遞到應(yīng)用程...
摘要:無論這個連接是外部主動建立的,還是內(nèi)部建立的。協(xié)議有表示層數(shù)據(jù)的表示安全壓縮。在整個發(fā)展過程中的所有思想和著重點都以一種稱為的文檔格式存在。 部署基礎(chǔ)知識url:協(xié)議://網(wǎng)站地址:端口(/)路徑地址?參數(shù)eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務(wù)器 80端口:找服務(wù)器上提供服務(wù)的應(yīng)用 nginx uri:/ab...
閱讀 1664·2019-08-30 13:04
閱讀 2217·2019-08-30 12:59
閱讀 1778·2019-08-29 18:34
閱讀 1876·2019-08-29 17:31
閱讀 1268·2019-08-29 15:42
閱讀 3546·2019-08-29 15:37
閱讀 2868·2019-08-29 13:45
閱讀 2782·2019-08-26 13:57