Я хотел бы перенаправить все URL-адреса, которыененачните с префикса /abcd/
to ->, /abcd/
учитывая, что сервер использует proxy_pass
.
server {
location / {
proxy_pass http://upstream-server/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
if ($request_uri = "/"){
return 301 /abcd/;
}
}
}
Я думаю использовать регулярное выражение и отрицание примерно так:
location ~ ^/(?!abcd.*).*$ {
return 301 /abcd/;
}
Есть ли другое/лучшее решение?
решение1
Я думаю, это сложнее, чем вам нужно. Nginxоцениваетот наиболее конкретного блока к наименее конкретному.
В этом примере все, что соответствует /abcd, отправляется в блок proxy_pass, все остальное отправляется в блок /, который перенаправляется.
Я это не проверял, попробуйте, а если не сработает, я подумаю еще.
location /abcd {
proxy_pass (etc);
}
location / {
return 301 /abcd/;
}