nginx
15 commands
15 shown
Проверить конфигурацию
Проверить nginx.conf без перезагрузки
nginx -t
Перезагрузить без даунтайма
Плавная перезагрузка конфига без разрыва соединений
nginx -s reload
Скомпилированные модули
Список встроенных и динамических модулей в бинарнике
nginx -V 2>&1 | tr ' ' '\n' | grep module
Следить за access log
Стримить IP, путь, код ответа и размер ответа
tail -f /var/log/nginx/access.log | awk '{print $1, $7, $9, $10}'
Запросы по коду ответа
Частота каждого HTTP кода в access log
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
Топ 10 запрашиваемых URL
Самые популярные пути из access log
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
Топ IP по числу запросов
Топ 10 клиентских IP по числу запросов
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
Блок rate limiting
Лимит 10 запросов/с на IP с burst 20 (добавить в http/server)
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
limit_req zone=api burst=20 nodelay;
Проксирование на upstream
Round-robin upstream с резервом и keepalive соединениями
upstream backend {
server 10.0.0.1:8080;
server 10.0.0.2:8080 backup;
keepalive 32;
}
Включить gzip
Сжимать текстовые ответы ≥1KB на уровне 6
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1024;
gzip_comp_level 6;
JSON ответ об ошибке
Кастомное JSON-тело для ответа на rate limit или ошибку
error_page 429 /429.json;
location = /429.json {
default_type application/json;
return 429 '{"error":"rate_limited"}';
}
Редирект на HTTPS
Постоянный редирект всего HTTP трафика на HTTPS
server {
listen 80;
return 301 https://$host$request_uri;
}
Активные соединения
Встроенная страница статуса: активные, чтение, запись, ожидание
curl -s http://localhost/stub_status
Заблокировать диапазон IP
Заблокировать подсеть и конкретный IP в location/server блоке
deny 192.168.1.0/24;
deny 10.0.0.1;
allow all;
Проксировать WebSocket
WebSocket прокси с обязательными заголовками Upgrade
location /ws/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
no commands match