тоесть например у меня 2 одинаковых приложения у которых эндпоинт /files на одно приложение идёт путь location / (И по запросу /files всё естественно работает), а я хочу добавить новую локацию location /app и мне нужно чтоб приложение работало в этой локации и отдавало /app/files
location /app { proxy_pass scheme://upstream/app/files; }
но я так понимаю мне в самом приложении надо делать изменения и добавлять app ко всем эндпоинтам?
Добавь / после app в location
А что там за приложение на бекэнде? Я думал, там статика какая-то С приложением возможны нюансы
ну там node js express приложение там указано app,get('/files' ...)
реверс прокси nginx. Тоесть мне нужно чтоб он как бы транслировал запросы /app в / для самого приложения. Если это возможно конечно
Добавлю про слеш и про любителей потроллить Вот так: location /app { proxy_pass scheme://upstream; } Запрос "/app/files/route" будет передан на апстрим 1:1, поскольку после имени апстрима в proxy_pass нету никакого URI-префикса. А вот так: location /app { proxy_pass scheme://upstream/; } Запрос "/app/files/route" будет передан на апстрим как "//files/route", что из-за двойного слеша апстримом может быть воспринято некорректно. А способ корретно отрезать только "/app" остаётся только один, через rewrite ... break: location /app { rewrite /app/?(.*) /$1 break; proxy_pass scheme://upstream; } Но это гораздо менее производительно (вызов библиотеки PCRE вместо банальной замены одной строки на другую), костыль, и как правило используется только из-за незнания способа № 1. Более того, сплошь и рядом втречающиеся конструкции типа location /app { rewrite /app/(.*) /$1 break; proxy_pass scheme://upstream; } ещё более некорректны, rewrite не отработает, если URI запроса строго равен "/app" - такой URI не матчится шаблоном "/app/(.*)" (в отличие от "/app/?(.*)").
норм, интересная инфа
Обсуждают сегодня