我想配置Nginx在我的域代理上有一个路由到另一个URL。更具体地说,我想my.domain.com/special_route
代理到another.domain.com
,而URL在地址栏中保持不变。例如,我想my.domain.com/special_route/some_path
代理到another.domain.com/some_path
,而URL保持不变。
这是我到目前为止添加的配置:
set $another_url https://another.domain.com;
location ~ /special_route(/?.*)$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
proxy_pass $another_url$1;
}
它看起来像预期的那样工作,但有一个明显的例外。my.domain.com/special_route/some_path
工作,my.domain.com/special_route/
也工作。但是,my.domain.com/special_route
(没有尾部斜杠)不工作。它看起来像是another.domain.com/special_route
的代理。
我需要更改或添加什么到我的配置中,才能让基本路由在没有尾部斜杠的情况下工作?
1条答案
按热度按时间euoag5mw1#
当
$1
为空时,它就变成了proxy_pass http://upstream
,这意味着url被完整地传递到后端(/special_route
)。在这种情况下,变量需要更新为
/
。这是一个可行的方法: