Настройка Nginx
Наиболее известные веб-сервера “общего” назначения:
- Apache HTTPD
- Nginx
Рассмотрим Nginx
Официальный сайт: http://nginx.org
Поставим задачу о распространении статического сайта
Статический сайт - набор HTML-документов и документов, необходимых для его отображения. Отличельной особенностью является то, что содержимое страниц не зависит от действий конечного пользователя.
В качестве примера возьмём сайт student@10.7.223.12:~/static-site.tar.xz.
Для его отображения достаточно поднять веб-сервер и указать каталог, в котором находятся файлы для отображения.
Установка nginx
apt install nginx
Настройка nginx
Конфигурационные файлы (на удивление) находятся в каталоге /etc/nginx
.
Ключевым файлом является nginx.conf
. Т.е. при старте службы происходит считывание ТОЛЬКО этого файла. Все остальные файлы подключаются к нему с помощью специальных внутренних команд.
Директива include
позволяет добавлять в конфигурационный файл другие конфигурационные файлы. Добавление происходит в месте вызова include
.
Важно:
- Местоположение журнала работы: /var/log/nginx/…
- Подклчение файлов происходит из каталогов
- /etc/nginx/conf.d/
- /etc/nginx/sites-enabled
Вопрос: почему есть по 2 каталога modules-available/modules-enabled и sites-available/sites-enabled?
В каталоге available
содержатся потенциально необходимые конфигурации. В каталоге enabled
находятся ссылки на реально нужные конфигурации, которые должны быть включены в общую конфигурацию. Таким образом можно легко управлять доступностью того или иного сайта: достаточно добавить или убрать сиволическую ссылку в каталоге enabled
и перезапустить сервер. Не надо заниматься исправлением самих файлов.
Настройка 1 сайта
По соглашению конфигурации сайтов находятся в /etc/nginx/sites-available.
listen - какой порт обслуживается сервером.
- 80, используется протокол HTTP 1 без шифрование
- 443, используется что-то с шифрованием
Ключевое слово “default_server” означает, что подключения к данному виртуальному серверу будут происходить если все остальные виртуальные сервера не подошли под запрос.
root - указание на каталог, из которго необходимо выдавать статические файлы.
server_name содержит в себе список DNS-имён, которые должен обрабатывать данный сервер. Подчёркивание говорит о том, что любое имя подходит.
Блоки location описывают как должны обрабатываться запросы по различным путям. Такой блок можно сравнить с get
, post
из Sinatra.
Упражнение
Создадим новую конфигурацию для показа собственного статического сайта.
- Получить архив с компьютера 12, student@10.7.223.12:~/static-site.tar.xz (с помощью scp).
- Распаковать архив по пути /var/www/static-site. Для распаковки потребуется архиватор xz, который находится в пакете
xz-utils
- Скопировать описание сайта по умолчанию /etc/nginx/sites-available/default в /etc/nginx/sites-available/my-static-site.
- Убрать все комментарии
- Исправить путь к статическим файлам
- Убрать ссылку на
default
изsites-enabled
- Добавить ссылку на
my-static-site
в каталогsites-enabled
. - Перезапустить службу
nginx
.
Открыть файлы логов и понять, почему не заработало :)