Перейти к основному содержимому
Раздача статического содержимого

Раздача статического содержимого

Bводные данные

Nginx может раздавать статические файлы, например изображения и HTML-страницы.

Рассмотрим пример, в котором в зависимости от запроса файлы будут раздаваться из разных локальных каталогов:

  • /data/html, который содержит HTML-файлы,
  • /data/images, содержащий файлы с изображениями.

Для этого нужно:

  1. Отредактировать конфигурационный файл nginx.conf, расположенный в директории /etc/nginx.
  2. Настроить директиву server внутри контекста http с двумя директивами location.

Последовательность настройки

  1. Создайте каталог /data/html и положите в него файл index.html с любым текстовым содержанием.
  2. Создайте каталог /data/images и положите в него несколько файлов с изображениями.
  3. Откройте конфигурационный файл nginx.conf.
  4. Закомментируйте лишние блоки: конфигурационный файл по умолчанию уже включает в себя несколько примеров блока server, в основном закомментированных.
  5. Добавьте новую директиву server:
http {
server {
}
}
  1. В контекст server нужно добавьте директивы location для двух запросов:
   server {
listen 443 ssl;
server_name localhost;
location / {
root /data/html;
}

location /images/ {
root /data;
}
}
  1. Перезагрузите службу.
sudo systemctl reload nginx # без прерывания работы

sudo systemctl restart nginx # с прерыванием работы

Результат настройки

Это конфигурация сервера с настройками:

  • слушать 443 порт,
  • быть доступным на локальном компьютере по адресу https://localhost/,
  • отвечать на запросы, URI которых начинаются с /images/, файлами из каталога /data/images,
  • указывать 404 ошибку в случае отсутствия файла,
  • на остальные запросы (URI которых не начинаются на /images/) отвечать из каталога /data/html.

Например:

  • на запрос https://localhost/images/example.png

    Nginx отправит в ответ файл /data/images/example.png.

  • на запрос https://localhost/some/example.html

    Nginx отправит в ответ файл /data/html/some/example.html.