nginx proxy_pass根据位置/传递rewritedurl的不同后端

如果你想通过基于位置的proxypass代理URL请求到两个不同的后端,最快和最干净的解决scheme是什么。

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; } 

有了这个configuration,nginx"/app1"或“ /app2 ”传递给代理,而后端无法识别url / command。

例如,当访问http://<nginx>/app1/messages / messages时,只想传递给http://127.0.0.1:3000 http://<nginx>/app1/messages ,但是在上面的configuration中,也会将/app1/传递给http://127.0.0.1:3000/app1/messages/app2