我将nginx用作多个Rails应用程序的反向代理(使用Nixy)。如果缺少,我需要重写一些请求以在url前面插入字符串。
例如:如果我有http://proxy_ip/app_name/some/root
,我什么都不想修改,但是如果我有http://proxy_ip/some/root
,我想在http://proxy_ip/app_name/some/root
我尝试过rewrite ^ /app_name/$uri;
,但是它不起作用,而且我也不知道如何有条件地进行重写。
您可以使用地图来检测缺少的应用程序名称,然后使用缺少的应用程序名称返回301。
map $uri $prepend_app_name {
~^/some/root(/.*)?$ app_name;
}
server {
if ($prepend_app_name) {
return 301 /$prepend_app_name$uri;
}
# ...
}
查看注释,以防if语句,请记住nginx文档的建议:https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/