Я хотел бы переписать URL-адрес в обратном прокси-сервере, чтобы он удалял первый сегмент, но оставляет без изменений следующие сегменты. Мне нужно, чтобы это произошло до того, как он попадет в прокси-сервер.
Пример:
/admin/auth/local ----> (REWRITES TO) /auth/local
/admin/auth/register -------> (REWRITES TO) /auth/register
Блок «Мое местоположение»:
location /admin {
#add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass_header Set-Cookie;
proxy_read_timeout 30;
proxy_buffers 64 8k;
rewrite /admin / break;
proxy_pass http://127.0.0.1:9000;
Я безуспешно пробовал следующее:
rewrite /admin / break;
Здесь есть две части. Во-первых, как nginx направляет входящие запросы через proxy_pass
.
Там можно сопоставить входящие запросы для /
бэкэнду с префиксом / admin /
со следующим конфигурация:
location / {
proxy_pass http://127.0.0.1:9000/admin/;
}
Оператор rewrite
не требуется.
Вторая часть - это URL-адреса, которые генерируются приложением, работающим по адресу 127.0.0.1:9000
. Вам необходимо настроить это приложение на создание URL-адресов без префикса / admin
, чтобы иметь URL-адреса, соответствующие настройке маршрутизации nginx.
Nginx не может надежно внести это изменение в контент, созданный серверной частью.
Я считаю, что вам просто нужно добавить свой первый сегмент (admin) в проход прокси.
proxy_pass http://www.example.com/admin/;