我搜索了,我找不到任何方法來做到這一點,所以我想知道是否有可能。
我有一個接受請求的服務正在運行,一切正常。但是,我想用在同一臺機器上運行的不同服務來回答其中一些請求。這些請求是 go tosome/path/{variable}/etc和 method的請求POST。
所以我想知道是否可以直接從 nginx 執行此操作而不會增加任何開銷。
我的第一個解決方案是創建一個不同的 API 來接收所有請求,如果它不是我想要攔截的,只需對原始服務進行代理請求。但這為每個回應增加了 200 到 500 毫秒,這在我們的用例中是不可接受的。
所以我認為通過 nginx 這樣做會解決得更快,但我找不到方法,甚至找不到是否可能。
任何幫助將不勝感激。如果您有我可以測驗或實施的任何其他想法或替代方案,也將受到歡迎。
編輯:根據伊萬評論的要求。
我們已經運行了 nginx,服務于 service1 的所有請求。
我們想做的是:
if request.path is in the form of /path/{variable}/etc and request.method==POST:
serve using service2
else:
serve using service1
uj5u.com熱心網友回復:
假設您的服務托管在同一臺服務器上并且訪問埠不同,那么使用map塊鏈應該可以解決問題:
map $uri $service_by_uri {
~^/path/[\w\d] /etc 127.0.0.1:10002; # service 2
default 127.0.0.1:10001; # service 1
}
map $request_method $service {
POST $service_by_uri; # select service according to the request URI
default 127.0.0.1:10001; # service 1
}
server {
...
proxy_pass http://$service;
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/422866.html
標籤:
