
Nginx: настройка веб-сервера
Nginx — один из самых популярных веб‑серверов, известный своей производительностью и гибкостью. В этом руководстве мы разберём, как установить Nginx, настроить виртуальные хосты, включить SSL, а также как обслуживать статические файлы и проксировать запросы к backend‑приложениям.
1. Установка
sudo apt update
sudo apt install nginx
После установки проверьте статус:
sudo systemctl status nginx
Если сервис запущен, откройте в браузере http://<IP-адрес>
— вы увидите страницу «Welcome to nginx!».
2. Базовая конфигурация
Конфигурационные файлы находятся в /etc/nginx
. Основной файл — /etc/nginx/nginx.conf
. В большинстве случаев достаточно редактировать файлы в каталоге sites-available
и создавать символические ссылки в sites-enabled
.
2.1 Создание виртуального хоста
Создайте файл /etc/nginx/sites-available/example.com
:
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;
}
# Статические файлы
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires max;
log_not_found off;
}
# Логи
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
Создайте каталог с контентом и файл index.html
:
sudo mkdir -p /var/www/example.com/html
echo "<h1>Привет, Nginx!</h1>" | sudo tee /var/www/example.com/html/index.html
Активируйте сайт и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3. Настройка обратного прокси
Если ваше приложение работает на другом порту (например, 8000), настройте проксирование:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
После изменения конфигурации проверьте и перезапустите:
sudo nginx -t
sudo systemctl reload nginx
4. Включение HTTPS
Самый простой способ получить сертификат — Let’s Encrypt. Установите certbot
:
sudo apt install certbot python3-certbot-nginx
Запустите генерацию сертификата:
sudo certbot --nginx -d example.com -d www.example.com
certbot
автоматически обновит конфигурацию Nginx и настроит автоматическое обновление сертификатов.
5. Логи и мониторинг
- Доступ:
/var/log/nginx/example.com.access.log
- Ошибки:
/var/log/nginx/example.com.error.log
Для просмотра в реальном времени:
sudo tail -f /var/log/nginx/example.com.error.log
6. Тестирование
Проверьте, что сервер отвечает:
curl -I http://example.com
Вы должны увидеть заголовки HTTP/1.1 200 OK
.
7. Заключение
Nginx — мощный инструмент, который можно настроить под любые задачи: от простого статического сайта до сложного микросервисного окружения. Следуя этому руководству, вы сможете быстро развернуть и настроить веб‑сервер под свои нужды.