Nginx: шпаргалка
Шпаргалка по основным секциям Nginx, которые следует держать под рукой. Ниже приведены самые частые функции: включение SSL, переадресация, раздача статики и т.д.
Кстати, для мониторинга доступности Nginx сайтов и истечения срока SSL сертификатов я использую https://proverator.ru/ (мой проект). Когда ваш сайт падает, он присылает уведомления в Telegram.
Содержание
Указание порта (включая SSL)
server {
# Стадартный HTTP протокол
listen 80;
# Стандартный HTTPS протокол
listen 443 ssl;
# HTTP на 80-м порту с использованием IPv6
listen [::]:80;
# HTTP на 80-м порту с использованием ТОЛЬКО IPv6
listen [::]:80 ipv6only=on;
}
Логирование запросов
server {
# Абсолютный путь к файлу
access_log /path/to/file.log;
# Включить запись ('on' или 'off')
access_log on;
}
Подключение домена
server {
# Прослушивать yourdomain.com
server_name yourdomain.com;
# Прослушивать несколько доменов
server_name yourdomain.com www.yourdomain.com;
# Прослушивать все поддомены
server_name *.yourdomain.com;
}
Раздача статики
server {
listen 80;
server_name yourdomain.com;
location / {
root /path/to/website;
}
}
Переадресация
# Переадресация для всех страниц
server {
listen 80;
server_name www.yourdomain.com;
return 301 http://yourdomain.com$request_uri;
}
# Переадресация конкретной страницы
server {
listen 80;
server_name www.yourdomain.com;
location /redirect-url {
return 301 http://otherdomain.com;
}
}
Прокси (reverse proxy)
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
# localhost:3000 ваш сервер, запущенный локально (например: node.js)
}
}
Балансировка нагрузки (Round Robin)
upstream node_js {
server 0.0.0.0:3000;
server 0.0.0.0:4000;
server 123.131.121.122;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://node_js;
}
}
Включение SSL (HTTPS)
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privatekey.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/fullchain.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_connection_timeout 1d;
ssl_session_cache shared:SSL:50m;
add_header Strict-Transport-Security max-age=15768000;
}
# Переадресация с HTTP на HTTPS
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
---
Кстати, если ваш сайт упал, мой сервис может уведомить вас в Telegram.
Я разработал бесплатный сервис для мониторинга доступности сайтов (как раз искал, чем мониторить Nginx).
Если нужен - загуглите "Проверятор" или перейдите по ссылке в описании аккаунта.