Наиболее известные веб-сервера “общего” назначения:

  • 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.

Открыть файлы логов и понять, почему не заработало :)