Введение
Nginx – один из популярных web-серверов для размещения крупных сайтов с высоким трафиком пользователей в Интернете. Также, считается одним из удобных утилит, как для web-сервера, так и для конфигурирования обратного прокси.
Вы можете ознакомиться с нашей инструкцией по установке Nginx в Ubuntu. Здесь мы рассмотрим запуск последней версии Nginx в Docker-контейнере.
Подготовка к работе
Вам необходимо развернуть сервер на базе Ubuntu, настроить пользователя с правами на выполнения команд с «sudo» и брандмауэр UFW согласно нашей инструкции.
Как установить и настроить Docker на Ubuntu 22.04.
Конфигурационные файлы Nginx
Для файлов необходимо создать основную директорию, в которой будут хранится папки и файлы конфигурации для отображения нашей web-страницы.
mkdir -p serverspace
cd serverspace
Создадим несколько директорий и в них создадим файлы конфигурации для нашего тестового сайта, в котором запустим Nginx в Docker.
mkdir -p project/conf-files
mkdir -p html/files
touch project/conf-files/serverspace.ru.conf
touch project/nginx.conf
touch html/files/serverspace.html
После создания всех файлов мы должны получить следующий список содержимого:

Перейдём к их настройке.
Внесём изменения в файле serverspace.ru.conf удобным для нас текстовым редактором.
vim /serverspace/project/conf-files/serverspace.ru.conf
Запишем наш код:
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index serverspace.html;
location / {
try_files $uri $uri/ =404;
}
}
Перейдём к настройке файла nginx.conf и вставим наш код:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
В файле html/files/serverspace.html добавим код, в котором указываются заголовок сайта и одна строка с текстом:
Welcome to the Test-Site from Serverspace
Перейдём к запуску Nginx в Docker-контейнере.
Запуск контейнера
Запустим контейнер с помощью команды:
docker run --name nginx-serverspace -p 80:80 -v /root/serverspace/html/files/:/usr/share/nginx/html/ -v /root/serverspace/project/nginx.conf:/etc/nginx/nginx.conf -v /root/serverspace/project/conf-files/:/etc/nginx/conf.d/ -d nginx
docker run – запускает контейнер;
–name nginx-serverspace – указывает название контейнера;
-p 80:80 – прослушиваемый порт;
-v /path/to/file – указывает путь откуда будет извлекаться файлы и передаваться в контейнер Nginx;
-d nginx – запускаемый образ в контейнере
После успешного запуска контейнера получим результат и проверим статус с помощью команды “docker ps”:

Перейдём по IP адресу созданного сервера, где откроется web-страница с нашим заголовком:

Выводы
Мы рассмотрели создание файлов и папок, которые в дальнейшем копируются в образ web-сервера при запуске в контейнере. В результате, мы смогли получить доступ к простой web-странице.
Каждый раз использование вручную команды по запуску Nginx и обозначения пути до директории файлов занимает больше времени. По этой причине удобно использовать docker-compose.yml, в котором заранее прописаны базовые настройки по запуску Nginx в Docker, указаны порт, пути до файлов. С помощью простой команды docker-compose up -d можно быстро развернуть свой образ Nginx в Docker.