Простой сайт на nginx
Вот пошаговая инструкция по настройке сайта (виртуального хоста) на nginx.
Предварительные требования
- Установленный nginx (
sudo apt install nginxдля Ubuntu/Debian). - Ваш домен (например,
example.com) указывает на IP-адрес сервера. - Файлы вашего сайта лежат на сервере (например, в
/var/www/example.com).
Шаг 1. Структура файлов
Рекомендуется хранить каждый сайт в отдельной папке. Создайте директорию для вашего проекта:
sudo mkdir -p /var/www/example.com/html
Поместите туда файлы index.html или index.php.
Шаг 2. Права доступа
Чтобы nginx мог читать файлы, нужно выдать права пользователю www-data (от которого работает nginx) или просто сделать вас владельцем, а группу www-data — владельцем группы.
sudo chown -R $USER:$USER /var/www/example.com/html
Шаг 3. Создание конфигурационного файла (Server Block)
В nginx конфигурации сайтов (виртуальные хосты) лежат в /etc/nginx/sites-available/, а ссылки на включенные сайты — в /etc/nginx/sites-enabled/.
sudo nano /etc/nginx/sites-available/example.com
Пример для статического сайта (HTML):
server {
listen 80;
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;
}
}Пример для сайта на PHP (PHP-FPM):
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# Передача запросов PHP скриптов в PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Версия PHP может отличаться
}
# Запрет доступа к скрытым файлам (.htaccess, .git и т.д.)
location ~ /\.ht {
deny all;
}
}Шаг 4. Активация сайта
Нужно создать символическую ссылку из sites-available в sites-enabled:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Шаг 5. Проверка конфигурации и перезапуск
Всегда проверяйте конфигурацию на ошибки:
sudo nginx -t
Если все хорошо (вывод test is successful), перезапустите nginx:
sudo systemctl restart nginx
Или перезагрузите конфигурацию без разрыва соединений:
sudo systemctl reload nginx
Шаг 6. Настройка HTTPS (SSL) с помощью Certbot
Сейчас почти обязательно иметь SSL-сертификат. Самый простой способ — использовать Certbot.
- Установите Certbot:bashsudo apt install certbot python3-certbot-nginx
- Запустите автоматическую настройку:bashsudo certbot --nginx -d example.com -d www.example.com
Certbot сам изменит вашу конфигурацию, включив HTTPS, и настроит автоматическое продление сертификата.
Где проверить результат?
Откройте браузер и перейдите по адресу http://example.com (или https://, если настроили SSL).
Если не работает, смотрите логи:
sudo tail -f /var/log/nginx/error.log