Понимание серверных блоков Nginx: частые вопросы по конфигурации

В этой статье рассматриваются часто задаваемые вопросы по настройке серверных блоков Nginx, включая структуру, директивы location и эффективную отдачу статического контента для новых развертываний.

Введение

Серверные блоки (server blocks) в Nginx — это эквивалент виртуальных хостов в Apache. Они позволяют запускать несколько веб-сайтов на одном сервере, используя один IP-адрес или порт.

Основная структура

Типичный серверный блок выглядит следующим образом:

server {
    listen 80;
    server_name example.com;

    root /var/www/example;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Ключевые директивы:

  • listen: определяет IP-адрес и порт, на которых сервер ожидает соединения.
  • server_name: задает доменное имя для данного блока.
  • root: указывает путь к файлам вашего сайта.
  • location: определяет, как Nginx должен обрабатывать запросы к определенным путям.

Часто задаваемые вопросы

Как правильно настроить несколько сайтов?

Для каждого сайта рекомендуется создавать отдельный файл конфигурации в директории /etc/nginx/sites-available/ и создавать символическую ссылку на него в /etc/nginx/sites-enabled/.

Почему мой сайт отдает 404 ошибку?

Чаще всего это связано с неправильно указанной директивой root или отсутствием прав доступа у пользователя www-data к файлам сайта.

Как эффективно отдавать статику?

Используйте блок location с регулярными выражениями для кэширования статических файлов:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}