11
如果您想通過基於位置的proxypass將代理URL請求代理到兩個不同後端,最快和最乾淨的解決方案是什麼。每個位置的Nginx /通過重寫uri到proxy_pass
location /app1/ {
alias /var/www/ruby/public;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
try_files $uri $uri/ @ruby;
}
location @ruby {
proxy_pass http://127.0.0.1:3000;
}
location /app2/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
try_files $uri $uri/ @other;
}
location @other {
proxy_pass http://127.0.0.1:8080;
}
有了這個配置nginx的通行證「/ APP1」或「/ APP 2」,以代理和後端無法識別URL /命令..
如例如想傳遞給http://127.0.0.1:3000
只/messages
當訪問http://<nginx>/app1/messages
- 但在配置上面也通過/app1/
爲http://127.0.0.1:3000/app1/messages
。這同樣適用於/app2
這並不是由於工作'「proxy_pass不能有URI部分位置由正則表達式給出......「',請參閱http://stackoverflow.com/questions/21662940/proxy-pass-cannot-have-uri-part-in-location。 – frhd