Как сделать подмену адреса в nginx без изменения урла?

Добрый день, подскажите, как настроить nginx верным образом?

Нужно сделать так, чтобы когда человек в браузере открывает допустим:

https://site.ru/service/users/endpoint/

Отвечал скрипт, размещенный в просто /endpoint/

При этом чтобы ссылка в браузере не изменялась.
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
@dodo512
location ~ \.php$ {
    include fastcgi_params;

В файле fastcgi_params есть fastcgi_param REQUEST_URI $request_uri;
Переменная $request_uri всегда хранит первоначальный URI запроса.
Так что и в $_SERVER['REQUEST_URI'] всегда будет первоначальный запрос и никакие rewrite его не меняют.

Тут поможет map.
map $request_uri $_fix_request_uri {
    default $request_uri;
    ~^/mcs/users(/graphql/.*)$ $1;
}

server {
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param  REQUEST_URI  $_fix_request_uri;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Что-то типа
location /service/users/endpoint/ {
    rewrite ^/service/users(/endpoint/.+)$ $1 last;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы