Я прочитал документацию и мне кажется, что она такая же, как здесь введите здесь описание ссылки , но во время моих тестов контекст root имеет приоритет над контекстом регулярного выражения.
Кто-нибудь знает причину?
См. Мой файл nginx .conf и тестовый curl, который я сделал для проверки конфигурации:
http {
server {
listen 80;
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
location ~ /ui(/.*) {
try_files $1 $1/ @htmlext;
}
location @htmlext {
rewrite ^/ui(/\w*)(/.*)*$ $1.html last;
}
location / {
return 301 /ui$request_uri;
}
}
}
/ # curl -v http://localhost/ui/message?msg=error.forbidden
* Trying 127.0.0.1:80...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /ui/message?msg=error.forbidden HTTP/1.1
> Host: localhost
> User-Agent: curl/7.67.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.19.0
< Date: Thu, 09 Jul 2020 22:34:49 GMT
< Content-Type: text/html
< Content-Length: 169
< Location: http://localhost/ui/ui/message?msg=error.forbidden
< Connection: keep-alive
<
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.19.0</center>
</body>
</html>
* Connection #0 to host localhost left intact
Как вы можете видеть в curl это перенаправляет мою страницу / ui / message вместо ее отображения. Если я удалю местоположение / из конфигурации, оно будет работать, если я удалю местоположение @htmlext и добавлю это logi c в местоположение ~ /ui(/.*) вроде тоже работает. Тогда я думаю, что причина моей ошибки - перенаправление @htmlext.
Кто-нибудь знает почему?
Спасибо