一、前言
最近項目上線,做的是重構的項目,需要把老接口的流量切到新接口上,客戶端一直訪問的是老接口的url,沒有辦法改變,如果要做處理,就可以使用nginx把要訪問的url跳轉到新的接口上。
比如:老接口要訪問 http://gateway.io/getUserById
, 請求從客戶端傳出來,到nginx的時候,如果不做處理,nginx就會訪問對應機器。 如果不想這樣,nginx可以做url跳轉,就可以通過配置來訪問其他的url。
二、Nginx是什麼?
如果沒有接觸過nginx的同學,可以看看小編以前寫的博客。
簡單的說nginx 有兩個作用 :
- 反向代理,流量跳轉
- 做http服務器,做靜態文件服務器
這裏我們用到的就是反向代理的功能。
三、如何配置指定接口跳轉?
Nginx 在 /etc/nginx/conf.d 路徑下有 nginx.conf 文件:
server {
listen 80;
listen [::]:80;
server_name api.ares.com;
access_log /opt/nginxlogs/api.ares.com/access_log main;
error_log /opt/nginxlogs/api.ares.com/error_log error;
include /etc/nginx/conf.d/proxy-api-test7;
location / {
proxy_pass http://www.baidu.com;
}
}
可以通過 include 文件全路徑, 來指定文件 ,就不用把這個conf文件寫的很長。可以把所有的跳轉抽出來,方便修改,方便管理。而且方便管理。
比如,我們配置了多個 server,每個server監聽的是不同的域名。抽出文件後,就可以清楚的把每個域名的跳轉指定到固定的文件中。
jumpInfo文件,配置具體接口跳轉信息
location ~* ^/Login/Record {
rewrite ^(.*)$ /fee-system/Login/record break;
proxy_pass http://gateway.ares.com;
proxy_set_header Host gateway.ares.com;
}
location ~* ^/User/status {
rewrite ^(.*)$ /user-system/user/status break;
proxy_pass http://gateway.ares.com;
proxy_set_header Host gateway.ares.com;
}
location ~* ^/Pay$ {
rewrite ^(.*)$ /fee-system/pay break;
proxy_pass http://gateway.ares.com;
proxy_set_header Host gateway.ares.com;
}
這個文件就是 include /etc/nginx/conf.d/jumpInfo。配置的指定全路徑的跳轉信息文件。其實簡單的也就是通過localtion來進行跳轉的。
-
http:// api.ares.com/Login/Record 是訪問的原路徑
-
http:// api.ares.com/fee-system/Login/record 是訪問的新路徑
注意
/Pay$
這裏要說明一下這個,$表示是終止符,到這裏就結束。 否則如果還有配置 /Pay/AAA 的這種,如果在後面,就會跳轉到/Pay指定的url了。
這樣就完成了跳轉
^(.*)$
匹配所有的路徑映射到入口文件
^是正則表達式匹配字符串開始位置
$是正則表達式匹配字符串結束位置
四、小結
加油,重溫一下。要保持熱度。堅持就是勝利。