Понимание серверных блоков 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";
}