Nginx代理proxy pass配置去除前綴的實現(xiàn)
目錄
- 一個種方案是proxy_pass后面加根路徑/.
- 另一種方案是使用rewrite
使用Nginx做代理的時候,可以簡單的直接把請求原封不動的轉(zhuǎn)發(fā)給下一個服務(wù)。
比如,訪問abc.com/appv2/a/b.html, 要求轉(zhuǎn)發(fā)到localhost:8088/appv2/a/b.html
簡單配置如下:
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即可。請求只會替換域名。
但很多時候,我們需要根據(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的前綴對下游的服務(wù)是不需要的,除非下游服務(wù)添加context-path, 但很多時候我們并不喜歡加這個。如果Nginx轉(zhuǎn)發(fā)的時候,把這個前綴去掉就好了。
一個種方案是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的請求,proxy_pass的結(jié)尾有/, 則會把/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é)尾沒有/, rewrite重寫了url。
關(guān)于rewrite
syntax: rewrite regex replacement [flag] Default: — Context: server, location, if
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Nginx服務(wù)器的反向代理proxy_pass配置方法講解
- nginx 反向代理之 proxy_pass的實現(xiàn)
- nginx配置中proxy_pass反向代理502的bug記錄
- nginx配置proxy_pass代理轉(zhuǎn)發(fā)時報404問題
- nginx反向代理proxy_pass遇到的死循環(huán)問題
- nginx代理參數(shù)proxy_pass的實現(xiàn)
- Nginx?反向代理緩存(proxy_cache)的實現(xiàn)
- nginx反向代理proxy_set_header
- Nginx Proxy Manager輕松搭建反向代理的實現(xiàn)
- Nginx Proxy 代理測試的實現(xiàn)
相關(guān)文章
CentOS環(huán)境下Nginx配置SSL證書實現(xiàn)https請求詳解
這篇文章主要為大家介紹了Nginx實戰(zhàn)-配置SSL證書(CentOS環(huán)境),實現(xiàn)https請求過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
nginx配置負(fù)載均衡的服務(wù)宕機(jī)了怎么處理
這篇文章主要為大家介紹了nginx配置負(fù)載均衡的服務(wù)宕機(jī)的處理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
詳解ngx_cache_purge _proxy_cache指令使用
本文主要介紹了詳解ngx_cache_purge _proxy_cache指令使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
深入探究Nginx體系化之虛擬主機(jī)分類及配置實現(xiàn)
Nginx,這款備受推崇的高性能 Web 服務(wù)器,以其強(qiáng)大的性能和靈活的配置而廣受歡迎,在實際應(yīng)用中,虛擬主機(jī)是一項重要的功能,允許我們在單個服務(wù)器上托管多個網(wǎng)站,本文將深入探討 Nginx 虛擬主機(jī)的分類和配置實現(xiàn),幫助您構(gòu)建一個高效多站點托管平臺2023-08-08

