Url 每个位置的Nginx/将uri重写为代理\u传递

Url 每个位置的Nginx/将uri重写为代理\u传递,url,nginx,rewrite,proxypass,Url,Nginx,Rewrite,Proxypass,如果您希望根据位置通过proxypass将URL请求代理到两个不同的后端,最快和最干净的解决方案是什么 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_ho

如果您希望根据位置通过proxypass将URL请求代理到两个不同的后端,最快和最干净的解决方案是什么

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”或“/app2”传递给代理,后端无法识别url/命令

例如,您希望传递到
http://127.0.0.1:3000
访问
http:///app1/messages
-但在上面的配置中,也将
/app1/
作为
http://127.0.0.1:3000/app1/messages
。同样的情况也适用于
/app2

尝试将“/”放在上游名称的末尾 e、 g

请参阅本帖:

这不起作用,因为
“代理\u pass不能在正则表达式给定的位置包含URI部分…”
,请参阅。
proxy_pass http://127.0.0.1:8080/;