Не могу сделать балансировку если запрос приходить в одного IP-адреса. Проблема такая: заходить первый запрос, но отработка этого запроса занимает 30 секунд, из-за API. nginx не должен закрыть этот запрос, он должен ждать пока сервер не ответить. в это время заходить еще по очереди 10 запросов с того же IP-адреса, но их обработка не занимает больше 0,5 секунды. но из-за того что там один запрос все еще обрабатывается, остальные 10 запросов ждет этого.
Я подняла nginx с двумя серверами. Хочу сделать так, если первый сервер все еще обрабатывает запрос, остальные запросы были всегда направлены на второй. Когда первый сервер закончить обработку и вернет ответ, этот сервер станет доступным и можно будет туда отправлять запросы. Вроде сделала, когда с двух IP-адрес приходить запросы, тогда вроде все срабатывает. Но когда с одного IP-адреса приходить, тогда все запросы застывает, пока не обработает запрос с задержкой. Прошу помочь!
Это конфиг с nginx:
events {
worker_connections 1024;
}
http {
client_max_body_size 100M;
client_body_buffer_size 100M;
# limit_conn_zone $binary_remote_addr zone=halyk_bank_identification:10m;
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
' $request_length $upstream_addr $upstream_response_time';
access_log /etc/nginx/access.log main;
error_log /etc/nginx/error.log debug;
upstream rasa {
least_conn;
server rasa_actions-1:5017 max_fails=1 fail_timeout=10s;
server rasa_actions-2:5017 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_name localhost;
access_log /etc/nginx/access.log main;
location /webhook {
proxy_connect_timeout 3s;
proxy_read_timeout 10s;
proxy_pass http://rasa;
proxy_set_header Content-Type application/json;
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 Content-Length $content_length;
proxy_set_header X-Server-Name $host;
proxy_pass_request_body on;
access_log /etc/nginx/webhook_access.log main;
}
location / {
return 404;
}
}
}