Вступ
Nginx – це один із найбільш популярних веб/проксі серверів у світі. Є версії для сімейства Unix-подібних операційних систем та Microsoft Windows.
У цій публікації ми обговоримо різницю між директивами root і alias
В чому саме різниця між root і alias ?
Якщо коротко, то в обробці шляху вказаного в root
і alias
.
Директива root обробляється за схемою location
додається до root
, а в alias
частина розташування буде видалена. Рекомендують щоб location
відповідав останній частині значення директиви alias
.
Приклади застосування
Допустимо у нас є конфігурація:
location /static/ {
root /var/www/your_site/static/;
autoindex off;
}
У цьому випадку кінцевим шляхом, який Nginx виведе, буде:
/var/www/your_site/static/static
Веб сервер відповість статус кодом 404 на дане посилання, так як даного шляху static/static/
не існує. Причина тому, що частина розташування додається до шляху, указаного в root
. Тому правильна конфігурація із root
директивою буде:
location /static/ {
root /var/www/your_site/;
autoindex off;
}
Якщо ми розглянемо перший приклад, змінивши root
на alias
location /static/ {
alias /var/www/your_site/static/;
autoindex off;
}
то остаточним шляхом який ми отримаємо буде:
/var/www/your_site/static
так як частина розташування буде видалена.
Ну і ще трішки про косу риску в alias
Відповідно до документації Nginx немає чітких вказівок щодо того, чи є обов’язковою коса риска в кінці. Але деякі користувачі на stackoverflow(дана паблікація базується на цьому обговоренню) пишуть, що вона є обов’язковою.