Раздача статического содержимого
Раздача статического содержимого
Bводные данные
Nginx может раздавать статические файлы, например изображения и HTML-страницы.
Рассмотрим пример, в котором в зависимости от запроса файлы будут раздаваться из разных локальных каталогов:
/data/html, который содержит HTML-файлы,/data/images, содержащий файлы с изображениями.
Для этого нужно:
- Отредактировать конфигурационный файл
nginx.conf, расположенный в директории/etc/nginx. - Настроить директиву
serverвнутри контекстаhttpс двумя директивамиlocation.
Последовательность настройки
- Создайте каталог
/data/htmlи положите в него файлindex.htmlс любым текстовым содержанием. - Создайте каталог
/data/imagesи положите в него несколько файлов с изображениями. - Откройте конфигурационный файл
nginx.conf. - Закомментируйте лишние блоки: конфигурационный файл по умолчанию уже включает в себя несколько примеров блока server, в основном закомментированных.
- Добавьте новую директиву
server:
http {
server {
}
}
- В контекст
serverнужно добавьте директивыlocationдля двух запросов:
server {
listen 443 ssl;
server_name localhost;
location / {
root /data/html;
}
location /images/ {
root /data;
}
}
- Перезагрузите службу.
sudo systemctl reload nginx # без прерывания работы
sudo systemctl restart nginx # с прерыванием работы
Результат настройки
Это конфигурация сервера с настройками:
- слушать 443 порт,
- быть доступным на локальном компьютере по адресу
https://localhost/, - отвечать на запросы, URI которых начинаются с
/images/, файлами из каталога/data/images, - указывать 404 ошибку в случае отсутствия файла,
- на остальные запросы (URI которых не начинаются на
/images/) отвечать из каталога/data/html.
Например:
-
на запрос
https://localhost/images/example.pngNginx отправит в ответ файл
/data/images/example.png. -
на запрос
https://localhost/some/example.htmlNginx отправит в ответ файл
/data/html/some/example.html.