NGINX – это высокопроизводительный веб-сервер и обратный прокси-сервер, который часто используется для балансировки нагрузки, кеширования контента и обеспечения безопасности приложений. Он известен своей легкостью, гибкостью и высокой производительностью при обработке большого количества запросов.
Основные компоненты конфигурации
Конфигурационные файлы NGINX обычно находятся в директории /etc/nginx/
:
- nginx.conf – основной файл конфигурации, где определяются глобальные настройки сервера.
- sites-enabled/ – директория, содержащая ссылки на отдельные виртуальные хосты.
- sites-available/ – директория, хранящая все доступные конфигурации виртуальных хостов.
Структура файла nginx.conf
- user: определяет пользователя, от имени которого будет запущен сервер.
- worker_processes: количество рабочих процессов, рекомендуется устанавливать равным количеству ядер процессора (
auto
автоматически выбирает оптимальное число). - error_log: путь к файлу логов ошибок.
- events: параметры обработки событий, таких как максимальное количество соединений на одного рабочего процесса.
- http: блок, содержащий настройки HTTP-сервера.
- include: включает внешние файлы конфигурации.
- log_format: формат записи логов доступа.
- access_log: путь к файлу логов доступа.
- sendfile, tcp_nopush, tcp_nodelay: оптимизация передачи файлов.
- gzip: включение сжатия данных для уменьшения трафика.
- include /etc/nginx/sites-enabled/: подключение всех конфигурационных файлов виртуальных хостов.
nginx.conf
# Глобальная секция настроек
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Настройки gzip сжатия
gzip on;
gzip_disable "msie6";
# Включаем конфиг отдельных сайтов
include /etc/nginx/sites-enabled/*;
}
Конфигурации виртуальных хостов
Виртуальный хост позволяет настроить разные домены на одном сервере. Например, для сайта example.com
, создаем файл /etc/nginx/sites-available/example.com.conf
- listen: порт, на котором слушает сервер.
- server_name: список доменов, обслуживаемых этим виртуальным хостом.
- root: корневая директория для статического контента.
- index: файлы, которые будут использоваться в качестве индекса по умолчанию.
- location: секции, определяющие поведение сервера для различных URL.
etc / nginx / sites-available / example.com.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
После создания этого файла нужно создать символическую ссылку в директорию sites-enabled
:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Затем перезапустить NGINX:
systemctl restart nginx
Использование NGINX в Docker
Для запуска NGINX в контейнере Docker можно воспользоваться официальным образом nginx
. Вот пример простого Dockerfile
:
FROM nginx:alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Здесь мы копируем нашу собственную конфигурацию default.conf
в контейнер. Файл default.conf
может выглядеть так:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
Запуск контейнера:
docker build -t my-nginx .
docker run -d -p 8080:80 my-nginx
Теперь можно получить доступ к приложению через порт 8080 на локальном хосте.