Nginx重写和代理

我正试图将这两个Nginx位置定义合并为一个

location /v1/login { proxy_pass http://upstream/v1/login; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass_header Authorization; } location /v1/logout { proxy_pass http://upstream/v1/logout; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass_header Authorization; } 

所以我想这样的事情应该做的工作

  location ^~ /v1/(login|logout) { rewrite ^/v1/(.*)$ /v1/$1 break; proxy_pass http://upstream; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } 

但是对于我的生活,我无法实现它的工作。 我在这里做错了什么? 我已经尝试了所有可能的重写正则expression式的组合。

你试过这个吗?

 location ~ ^/v1/(login|logout) { proxy_pass http://upstream/v1/$1; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } 

编辑:

您也可以添加以下指令以及您的proxy_pass_header Authorization; 指示:

 proxy_set_header Authorization $http_authorization; 

这个简单的怎么了?

 location /v1/ { proxy_pass http://upstream/v1/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } 

您没有将完整的URL传递给proxy_pass 。 尝试这样的事情:

 location ~ ^/v1/(login|logout) { proxy_pass http://upstream; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }