Работа location с алиасом

Maxim Dounin mdounin на mdounin.ru
Пн Окт 24 15:48:01 UTC 2022


Hello!

On Mon, Oct 24, 2022 at 09:46:51AM +0300, izorkin на gmail.com wrote:

> Вариант с использованием префиксной строки будет быстрее обрабатываться
> nginx-ом, по сравнение с использованием регулярных выражений? Не смотря
> на увеличение итогового объёма конфигурационного файла?
> ```
>     root /var/www;
> 
>     location / {
>       try_files $uri =404;
>     }
> 
>     location /test/ {
>       try_files $uri =404;
>       alias /var/test/;
>     }
> 
>     location /custom/ {
>       try_files $uri =404;
>       alias /var/test/;
>     }
> ```

Основное тут не скорость, а простота поддержки.  Скажем, если вы в 
данный конфиг добавите что-нибудь вроде

    location /test/images/ {
        alias /var/test/images/
        expires max;
    }

то в случае префиксных строк всё будет работать так, как должно, 
то есть для файлов в /test/images/ будут возвращаться 
соответствующие заголовки Expires и Cache-Control.

А в случае регулярных выражений просто ничего не произойдёт, и 
запросы продолжат обрабатываться в location'е, заданном 
регулярным выражением.  И чтобы это понять, придётся внимательно 
прочитать весь конфиг.

Подробнее об этом и других случаях у Игоря в докладе, 
"Масштабируемая конфигурация nginx":

https://youtu.be/jf3wIN-FwW4
https://highload.guide/blog/scalable-configuration-nginx.html

Скорость, впрочем, тут тоже будет больше.  Кроме разве что совсем 
вырожденных случаев, когда одним регулярным выражением заменяются 
тысячи префиксных location'ов, и начинает сильно влиять объём 
конфигурации в памяти.

-- 
Maxim Dounin
http://mdounin.ru/



Подробная информация о списке рассылки nginx-ru