Nginx反向代理如何到訪問(wèn)者機(jī)器上(后端調(diào)試)
Nginx反向代理到訪問(wèn)者機(jī)器上
起因
因一名后端開(kāi)發(fā),不想使用postman等工具進(jìn)行接口調(diào)試,因?yàn)閣eb系統(tǒng)需要經(jīng)過(guò)N多步驟的前置動(dòng)作,不能保證參數(shù)的有效性,因此,需要直接點(diǎn)擊web系統(tǒng),觸發(fā)本地后端代碼。
但是,總不可能動(dòng)不動(dòng)就讓前端給自己起一個(gè)項(xiàng)目吧,于是就用nginx進(jìn)行部署前端項(xiàng)目,代理轉(zhuǎn)發(fā)的形式,將接口轉(zhuǎn)發(fā)到后端機(jī)器上。
因此有了關(guān)于這個(gè)配置的折騰。
配置
以下配置是用shell腳本生成的,需要參考腳本生成配置的,可以自己去翻下
配置內(nèi)容,就以注釋形式進(jìn)行說(shuō)明
# financeapi server配置 由腳本生成 server { listen 1001; ### 因?yàn)樯婕暗降谌降奈募?wù)器,當(dāng)特定的接口匹配時(shí),轉(zhuǎn)發(fā)到第三方文件服務(wù)器上 ### 307的作用是:在轉(zhuǎn)發(fā)過(guò)程中不改變?cè)钦?qǐng)求的任何內(nèi)容(請(qǐng)求方式、請(qǐng)求頭、請(qǐng)求體等) location /fronteapi/fs/uploadFile/ { return 307 http://10.10.10.10/fronteapi/fs/uploadFile/; } ### 后端接口主要在這個(gè)路由里進(jìn)行匹配 location /frontapi/ { ### 因?yàn)閜roxy_pass是自己拼接的,不是寫(xiě)死的字符串,因此在進(jìn)行代理轉(zhuǎn)發(fā)時(shí), ### 會(huì)丟失請(qǐng)求參數(shù),需要提前保存,最后拼在proxy_pass上 if ($request_uri ~* "financeapi(/.*$)") { set $path_remainder $1; } ### 代理轉(zhuǎn)發(fā)的主要配置,$remote_addr為nginx內(nèi)置的變量,可表示訪問(wèn)者的IP,本文主題就是這個(gè)變量體現(xiàn)的 proxy_pass http://$remote_addr:8079/$path_remainder; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cookie_path / "/; HTTPOnly; SameSite=Lax; Max-Age=86400"; } ### 靜態(tài)前端項(xiàng)目的根目錄路徑配置,相當(dāng)于入口 location / { root /home/docker/frontApp/front-web/dist; index index.html; try_files $uri $uri/ /index.html; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cookie_path / "/; HTTPOnly; SameSite=Lax; Max-Age=86400"; } ### 因?yàn)檎J(rèn)證用的是3方認(rèn)證服務(wù),因此當(dāng)如下路徑觸發(fā)時(shí)候,需要重寫(xiě)當(dāng)前路徑 location = /auth/oauth2/authorize { rewrite ^ http://xxx/auth/oauth2/authorize; } } # financeapi server配置 生成成功
Nginx反向代理實(shí)現(xiàn)指定接口訪問(wèn)指定機(jī)器
location表達(dá)式類(lèi)型
- location = 表示精確匹配
- location ^~ 表示uri以指定字符或字符串開(kāi)頭
- location ~ 表示區(qū)分大小寫(xiě)的正則匹配
- location ~* 表示不區(qū)分大小寫(xiě)的正則匹配
- location / 通用匹配,任何請(qǐng)求都會(huì)匹配到
匹配的優(yōu)先級(jí)順序
( localtion = ) > ( localtion 完整url ) > ( localtion ^~ ) > ( localtion ,* ) > ( lcoaltion部分起始路徑 ) > ( / )
需求
nginx反向代理某服務(wù)有兩個(gè)負(fù)載,要求 某個(gè) 或者 某系列 請(qǐng)求 打向指定負(fù)載
- 定義upstream
#7080 7091 2負(fù)載服務(wù) upstream gateway-all { server 127.0.0.1:7080; server 127.0.0.1:7081; } #7080服務(wù) upstream gateway-7080 { server 127.0.0.1:7080; } #7081服務(wù) upstream gateway-7081 { server 127.0.0.1:7081; }
要求 /api/v1/login
請(qǐng)求 7080機(jī)器,/api/v1/logout
請(qǐng)求 7081機(jī)器,其他請(qǐng)求走負(fù)載,/test-gateway
是反向代理服務(wù)的上下文
- 實(shí)現(xiàn)一:定義不同的localtion,路由不同的uri
location /test-gateway/api/v1/login { #指向上面的upstream proxy_pass http://gateway-7080; } location /test-gateway/api/v1/logout { #指向上面的upstream proxy_pass http://gateway-7081; } location /test-gateway { #指向上面的upstream proxy_pass http://gateway-all; }
- 實(shí)現(xiàn)二:一個(gè)localtion,路由不同的uri
location /test-gateway { if ($request_uri ~* "/api/v1/login"){ proxy_pass http://gateway-7080; } if ($request_uri ~* "/api/v1/logout"){ proxy_pass http://gateway-7081; } proxy_pass http://gateway-all; }
location 靈活多變,具體哪種適合自己,根據(jù)自己的業(yè)務(wù)場(chǎng)景來(lái)做選擇
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx通過(guò)geo模塊設(shè)置白名單的例子
今天小編就為大家分享一篇Nginx通過(guò)geo模塊設(shè)置白名單的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解
這篇文章主要介紹了Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解,瀏覽器的并發(fā)請(qǐng)求數(shù)目限制是針對(duì)同一域名的,同一時(shí)間針對(duì)同一域名下的請(qǐng)求有一定數(shù)量限制,超過(guò)限制數(shù)目的請(qǐng)求會(huì)被阻塞,需要的朋友可以參考下2019-07-07nginx ServerName匹配規(guī)則實(shí)現(xiàn)
本文主要介紹了nginx ServerName匹配規(guī)則實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2007-02-02keepalived對(duì)nginx進(jìn)行高可用搭建及原理詳解
這篇文章主要為大家介紹了keepalived對(duì)nginx進(jìn)行高可用搭建及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟
高效地管理和分發(fā)靜態(tài)資源是至關(guān)重要的,本文主要介紹了Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05Nginx如何限制IP訪問(wèn)只允許特定域名訪問(wèn)
我們?cè)谑褂玫臅r(shí)候會(huì)遇到很多的惡意IP攻擊,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問(wèn)了,下面這篇文章主要給大家介紹了關(guān)于Nginx如何限制IP訪問(wèn)只允許特定域名訪問(wèn)的相關(guān)資料,需要的朋友可以參考下2022-07-07聊聊Django+uwsgi+nginx服務(wù)器部署問(wèn)題
這篇文章主要介紹了Django+uwsgi+nginx服務(wù)器部署的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03詳解php+nginx 服務(wù)發(fā)生500 502錯(cuò)誤排查思路
這篇文章主要介紹了詳解php+nginx 服務(wù)發(fā)生500 502錯(cuò)誤排查思路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07