Раздача статического содержимого
Раздача статического содержимого
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.png
Nginx отправит в ответ файл
/data/images/example.png
. -
на запрос
https://localhost/some/example.html
Nginx отправит в ответ файл
/data/html/some/example.html
.