Skip to main content

Установка и безопасность

Шаг 1: Установка Nginx

Обновите список пакетов и установите Nginx из стандартных репозиториев Debian/Ubuntu.

sudo apt update && sudo apt install -y nginx

Шаг 2: Управление службой Nginx

Основные команды для управления состоянием службы Nginx.

Проверить статус:

sudo systemctl status nginx

Добавить в автозагрузку:

sudo systemctl enable nginx

Перезапустить Nginx (требуется после изменения конфигураций):

sudo systemctl restart nginx

Шаг 3: Настройка брандмауэра (iptables)

Чтобы Nginx был доступен извне, необходимо открыть порты 80 (HTTP) и 443 (HTTPS). Для сохранения правил после перезагрузки рекомендуется использовать пакет `iptables-persistent`.

Сначала установите пакет для сохранения правил:

sudo apt install -y iptables-persistent

Затем добавьте правила для портов 80 и 443. -I INPUT 5 вставляет правило на 5-ю позицию. Номер может потребоваться изменить в зависимости от вашей конфигурации.

sudo iptables -I INPUT 5 -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 6 -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Наконец, сохраните текущие правила, чтобы они применялись после перезагрузки:

sudo netfilter-persistent save

Пример базового файла /etc/nginx/nginx.conf

Это основной конфигурационный файл, который задает глобальные параметры работы веб-сервера. Редактировать его нужно с осторожностью.

# Указывает пользователя, от имени которого будут работать рабочие процессы Nginx.
# Рекомендуется использовать специального пользователя (www-data) для безопасности.
user www-data;
# Количество рабочих процессов. 'auto' — оптимальный вариант, Nginx сам определит
# количество, равное числу ядер процессора.
worker_processes auto;
# Путь к файлу, где будет храниться PID главного процесса Nginx.
pid /run/nginx.pid;
# Включает файлы с дополнительными модулями, если они установлены.
include /etc/nginx/modules-enabled/*.conf;
events {
    # Максимальное количество одновременных соединений, которое может
    # обработать один рабочий процесс. Общий лимит = worker_processes * worker_connections.
    worker_connections 768;
    # multi_accept on; # Позволяет рабочему процессу принимать все новые соединения сразу.
}
http {
    # Базовые настройки для обработки MIME-типов файлов.
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off; # Скрывает версию Nginx в ответах сервера.
    # Путь к файлу с MIME-типами.
    include /etc/nginx/mime.types;
    # MIME-тип по умолчанию.
    default_type application/octet-stream;
    # Настройки для логирования.
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    # Настройки для Gzip-сжатия. Уменьшает размер передаваемых данных.
    gzip on;
    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json ...;
    # Подключение конфигурационных файлов для каждого отдельного сайта (виртуального хоста).
    # Это главная директива, которая делает конфигурацию модульной.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}