add req limits
This commit is contained in:
parent
5435d7bdc6
commit
8315d59155
|
@ -2,8 +2,7 @@ FROM nginx:stable-alpine
|
||||||
COPY --chmod=0440 ["./locations", "/etc/nginx/locations"]
|
COPY --chmod=0440 ["./locations", "/etc/nginx/locations"]
|
||||||
COPY --chmod=0440 ["./configuration", "/etc/nginx/configuration"]
|
COPY --chmod=0440 ["./configuration", "/etc/nginx/configuration"]
|
||||||
COPY --chmod=0440 ["./error-pages", "/etc/nginx/error-pages"]
|
COPY --chmod=0440 ["./error-pages", "/etc/nginx/error-pages"]
|
||||||
COPY --chmod=0440 ["./resources", "/var/www/html/resources"]
|
COPY --chmod=0755 ["./resources", "/var/www/html/resources"]
|
||||||
COPY --chmod=0440 ["./resources", "/var/www/html/resources"]
|
|
||||||
COPY --chmod=0440 ["./nginx_configs/nginx.conf", "/etc/nginx/nginx.conf"]
|
COPY --chmod=0440 ["./nginx_configs/nginx.conf", "/etc/nginx/nginx.conf"]
|
||||||
|
|
||||||
ARG CONT_IMG_VER
|
ARG CONT_IMG_VER
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Включения в блок http (nginx.conf)
|
||||||
|
include /etc/nginx/configuration/limit_req_zones.conf;
|
|
@ -1,2 +1,3 @@
|
||||||
include configuration/compression.conf;
|
include configuration/compression.conf;
|
||||||
include configuration/error_pages.conf;
|
include configuration/error_pages.conf;
|
||||||
|
include configuration/limit_req.conf;
|
|
@ -0,0 +1,2 @@
|
||||||
|
#limit_req zone=global_limits burst=10;
|
||||||
|
limit_req zone=global_limits burst=30 delay=8;
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Описание зон ограничения количества запросов
|
||||||
|
|
||||||
|
#Используем переменную NGINX $binary_remote_addr, которая содержит двоичное представление IP-адреса клиента.
|
||||||
|
#Это означает, что мы ограничиваем каждый уникальный IP-адрес частотой запросов, определенной третьим параметром rate.
|
||||||
|
#(Используем эту переменную, потому что она занимает меньше места, чем строковое представление IP-адреса клиента, $remote_addr).
|
||||||
|
|
||||||
|
|
||||||
|
#Информация о состоянии примерно для 16 000 IP-адресов занимает 1МБайт,
|
||||||
|
#поэтому созданная зона может хранить около 160 000 адресов.
|
||||||
|
|
||||||
|
|
||||||
|
#Тут частота не может превышать 10 запросов в секунду 10 request/second.
|
||||||
|
#NGINX фактически отслеживает запросы с точностью до миллисекунды,
|
||||||
|
#поэтому этот предел соответствует 1 запросу каждые 100 миллисекунд (мс).
|
||||||
|
#Запрос отклоняется, если он поступает менее чем через 100 мс после предыдущего разрешенного.
|
||||||
|
|
||||||
|
limit_req_zone $binary_remote_addr zone=global_limits:10m rate=10r/s;
|
||||||
|
|
||||||
|
#Директива limit_req_zone задает параметры ограничения скорости и зоны общей памяти,
|
||||||
|
#но на самом деле не ограничивает скорость запросов. Для этого нужно применить ограничение
|
||||||
|
#к определенному блоку location или server, включив туда директиву limit_req.
|
||||||
|
|
||||||
|
#Например
|
||||||
|
# server {
|
||||||
|
# location /login/ {
|
||||||
|
# limit_req zone=mylimit;
|
||||||
|
# proxy_pass http://my_upstream;
|
||||||
|
# }
|
||||||
|
# }
|
|
@ -25,6 +25,10 @@ http {
|
||||||
error_log /var/log/nginx/error.log debug;
|
error_log /var/log/nginx/error.log debug;
|
||||||
|
|
||||||
gzip on;
|
gzip on;
|
||||||
|
|
||||||
|
#Include http includes
|
||||||
|
include /etc/nginx/configuration/_global_includes.conf;
|
||||||
|
|
||||||
include /etc/nginx/conf.d/*.conf;
|
include /etc/nginx/conf.d/*.conf;
|
||||||
include /etc/nginx/sites-enabled/*.conf;
|
include /etc/nginx/sites-enabled/*.conf;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
|
|
||||||
#Для сложных маршрутов с регулярным выражением
|
#Для сложных маршрутов с регулярным выражением
|
||||||
#Требует ресурсы на обработку регулярного выражения
|
#Требует ресурсы на обработку регулярного выражения
|
||||||
# server {
|
server {
|
||||||
# listen 80 default_server;
|
listen 80 default_server;
|
||||||
# listen [::]:80 default_server;
|
listen [::]:80 default_server;
|
||||||
# rewrite ^(.*) https://$host$1 permanent;
|
rewrite ^(.*) https://$host$1 permanent;
|
||||||
# }
|
}
|
||||||
|
|
||||||
#Не требует ресурсов для обработки запроса
|
#Не требует ресурсов для обработки запроса
|
||||||
#Уязвим для атак через Host-заголовок
|
#Уязвим для атак через Host-заголовок
|
||||||
server {
|
#server {
|
||||||
listen 80;
|
# listen 80 default_server;
|
||||||
listen [::]:80;
|
# listen [::]:80 default_server;
|
||||||
server_name _;
|
# server_name _;
|
||||||
return 301 https://$host$request_uri;
|
# return 301 https://$host$request_uri;
|
||||||
}
|
#}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
upstream rr_backend {
|
|
||||||
server 127.0.0.1:8080 weight=5 max_fails=3 fail_timeout=60s;
|
|
||||||
server 10.9.0.9:80 weight=2 max_fails=3 fail_timeout=60s;
|
|
||||||
server google.com weight=3 max_fails=3 fail_timeout=60s;
|
|
||||||
server ya.ru backup;
|
|
||||||
keepalive 8;
|
|
||||||
}
|
|
Loading…
Reference in New Issue