В предыдущей статье
Ubuntu - Nginx виртуальные хосты, часть 1 введены основы создания виртуальных хостов.
Это позволило нам обслуживать несколько доменов с одного IP адреса и слайсы. Теперь мы подробно рассмотрим более детальные настройки файлов виртуальных хостов.
Listenserver {
listen 80;
}
Внутри серверного модуля параметр 'listen', определяет порт для виртуального хоста.
Два наиболее распространенных порта, должны быть 80 (стандартный порт HTTP) и 443 (стандартный порт HTTPS) порты.
Конечно, вы можете добавить любой порт. Например, вы можете протестировать сайт на порту 8080.
server_nameОбычный порядок виртуального хост-файла означает следующая строка 'server_name'. Таким образом, в начале Vhost модуль сервера, как правило, выглядит следующим образом:
server {
listen 80;
server_name domain1.com;
}
Вы также можете добавить простые правила перезаписи здесь, чтобы направлять пользователей от
www.domain1.com к domain1.com:
server {
listen 80;
server_name www.domain1.com;
rewrite ^/(.*) http://domain1.com/$1 permanent;
}
aliaslocation /img/ {
alias /home/public_html/domain.com/images/;
}
Устанавливает местонахождение alias.
В этом случае адрес '/img/dog.png' вернет файл, расположенный по адресу:
/home/public_html/domain.com/images/dog.png
Это можно сделать для того чтобы убрать image/url файл и означает, что можно 'share' (расшарить) каталог изображений с другим сайтом, на тот же слайс.
rootИсходя из аналогичных настроек 'alias', где вы можете установить 'root' от положения (location):
location /img/ {
root /home/public_html/domain.com;
}
На этот раз, по запросу '/img/dog.png' вернет файл, расположенный по адресу:
/home/public_html/domain.com/img/dog.png
Это тонкая, но принципиальная разница между настройками 'alias' и 'root'.
error_pageerror_page 404 /error/404.html;
Устанавливает место для обычной страницы с ошибкой. В этом примере, папка 'error' находится в 'public' директории, где я розместил обычные страницы с ошибками. Вы можете перенаправить несколько типов ошибок в один файл, как здесь:
error_page 502 503 504 /error/50x.html;
internalОсновываясь на настройку страницы с ошибкой, это возможно, чтобы пользователь гарантированно получил, только страницу с ошибкой как фактическую ошибку.
Иными словами, на данный момент, пользователь может ввести URL:
http://domain.com/error/50x.html
и будет отображен 50x.html файл.
Не очень хорошо, особенно если файл содержит ошибки переменных, которые могут помочь пользователю разобратся, почему же они получают ошибки (например, предыдущую страницу, IP-адрес, и т.д.).
Мы можем установить 'internal' метки для обеспечения конкретных страниц, которые будут обслуживаться только с внутреннего триггера, а не из внешнего URL запроса.
Давайте рассмотрим пример, который будет включать в себя, свыше 50x страницы с ошибкой:
error_page 502 503 504 /error/50x.html;
location /error/50x.html {
internal;
}
Это будет гарантировать, что /error/50x.html файл только сработает и обслужится через внутреннюю ошибку.
Теперь перейдём к:
http://domain.com/error/50x.html
Вы бы получили ошибку 404 (файл не найден), вместо прямого доступа к файлу 50x.html.
Намного лучше.
Вы также можете это настроить для 404.html страницы, но в этом нету особого смысла если бы это сделали, откроется та же 404 страница!
ВыводыNginx содержит много настроек виртуального хоста и очень доступный для использования.
PS: перевод с английского. Если вы найдёте ошибки в переводе, сообщите об этом пожалуйста.
Источник