我使用 nginx 作为多个 Rails 应用程序的反向代理(使用 Nixy)。如果缺少,我需要重写一些请求以在 url 前面注入(inject)一个字符串。
例如:
如果我有 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;
}
# ...
}
关于Nginx 有条件地重写 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46729785/