Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn)
目錄
- 一個(gè)種方案是proxy_pass后面加根路徑/.
- 另一種方案是使用rewrite
使用Nginx做代理的時(shí)候,可以簡(jiǎn)單的直接把請(qǐng)求原封不動(dòng)的轉(zhuǎn)發(fā)給下一個(gè)服務(wù)。
比如,訪問(wèn)abc.com/appv2/a/b.html, 要求轉(zhuǎn)發(fā)到localhost:8088/appv2/a/b.html
簡(jiǎn)單配置如下:
upstream one { server localhost:8088 weight=5; } server { listen 80; server_name abc.com; access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main; location / { 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_set_header X-NginX-Proxy true; proxy_pass http://one; } }
即,設(shè)置proxy_pass即可。請(qǐng)求只會(huì)替換域名。
但很多時(shí)候,我們需要根據(jù)url的前綴轉(zhuǎn)發(fā)到不同的服務(wù)。
比如
abc.com/user/profile.html轉(zhuǎn)發(fā)到 用戶服務(wù)localhost:8089/profile.html
abc.com/order/details.html轉(zhuǎn)發(fā)到 訂單服務(wù) localhost:8090/details.html
即,url的前綴對(duì)下游的服務(wù)是不需要的,除非下游服務(wù)添加context-path, 但很多時(shí)候我們并不喜歡加這個(gè)。如果Nginx轉(zhuǎn)發(fā)的時(shí)候,把這個(gè)前綴去掉就好了。
一個(gè)種方案是proxy_pass后面加根路徑/.
server { listen 80; server_name abc.com; access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main; location ^~/user/ { 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_set_header X-NginX-Proxy true; proxy_pass http://user/; } location ^~/order/ { 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_set_header X-NginX-Proxy true; proxy_pass http://order/; } }
^~/user/表示匹配前綴是user的請(qǐng)求,proxy_pass的結(jié)尾有/, 則會(huì)把/user/*后面的路徑直接拼接到后面,即移除user.
另一種方案是使用rewrite
upstream user { server localhost:8089 weight=5; } upstream order { server localhost:8090 weight=5; } server { listen 80; server_name abc.com; access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main; location ^~/user/ { 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_set_header X-NginX-Proxy true; rewrite ^/user/(.*)$ /$1 break; proxy_pass http://user; } location ^~/order/ { 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_set_header X-NginX-Proxy true; rewrite ^/order/(.*)$ /$1 break; proxy_pass http://order; } }
注意到proxy_pass結(jié)尾沒(méi)有/, rewrite重寫了url。
關(guān)于rewrite
syntax: rewrite regex replacement [flag] Default: — Context: server, location, if
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Nginx服務(wù)器的反向代理proxy_pass配置方法講解
- nginx 反向代理之 proxy_pass的實(shí)現(xiàn)
- nginx配置中proxy_pass反向代理502的bug記錄
- nginx配置proxy_pass代理轉(zhuǎn)發(fā)時(shí)報(bào)404問(wèn)題
- nginx反向代理proxy_pass遇到的死循環(huán)問(wèn)題
- nginx代理參數(shù)proxy_pass的實(shí)現(xiàn)
- Nginx?反向代理緩存(proxy_cache)的實(shí)現(xiàn)
- nginx反向代理proxy_set_header
- Nginx Proxy Manager輕松搭建反向代理的實(shí)現(xiàn)
- Nginx Proxy 代理測(cè)試的實(shí)現(xiàn)
相關(guān)文章
nginx配置https加密訪問(wèn)的詳細(xì)教程
這篇文章主要介紹了nginx配置https加密訪問(wèn)的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Nginx 只允許 www 域名訪問(wèn)并禁止裸域名訪問(wèn)的實(shí)現(xiàn)步驟
通過(guò)Nginx配置,可以設(shè)定僅允許www域名訪問(wèn),禁止或重定向裸域名,提升網(wǎng)站品牌統(tǒng)一性及用戶體驗(yàn),設(shè)置包括創(chuàng)建針對(duì)www的虛擬主機(jī),禁止裸域名訪問(wèn),并可選進(jìn)行裸域名到www的301重定向,完成后,重啟Nginx服務(wù)器使配置生效2024-10-10Nginx實(shí)現(xiàn)UDP四層轉(zhuǎn)發(fā)的過(guò)程
為了解決VPN連接速度慢的問(wèn)題,可以通過(guò)Nginx實(shí)現(xiàn)UDP的四層轉(zhuǎn)發(fā),首先檢查Nginx是否安裝了with-stream模塊,然后修改nginx.conf配置文件進(jìn)行UDP端口的轉(zhuǎn)發(fā)設(shè)置,使用nginx-t檢查配置文件語(yǔ)法,無(wú)誤后重新加載Nginx,這樣通過(guò)國(guó)內(nèi)服務(wù)器中轉(zhuǎn),可以提升連接到國(guó)外服務(wù)器的速率2024-09-09Nginx中實(shí)現(xiàn)訪問(wèn)HTTP請(qǐng)求時(shí)自動(dòng)跳轉(zhuǎn)到HTTPS請(qǐng)求
本文主要介紹了Nginx中實(shí)現(xiàn)訪問(wèn)HTTP請(qǐng)求時(shí)自動(dòng)跳轉(zhuǎn)到HTTPS請(qǐng)求,下面介紹了兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08nginx proxy_set_header的具體實(shí)現(xiàn)
proxy_set_header?是 Nginx 配置中的一個(gè)重要指令,本文主要介紹了nginx proxy_set_header的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07