Nginx v Redis: преждевременно закрытое соединение

Мой экземпляр AWS EC2, на котором выполняется Node, должен передавать данные в мой кэш Redis. Это работало хорошо в течение нескольких месяцев. Но за прошедшие несколько дней он сломался.

Все запросы либо истекают через 60 секунд, либо я получаю ошибку 502.

Я добавил дополнительную запись в функцию узла. Это показало, что все это ломается, когда служба пытается поговорить с Redis.

Я перезагрузил узел redis несколько раз, но это не сработало. Я перестраивал стек Cloudformation несколько раз, но это не сработало. я прекратил и создал новые экземпляры EC2 - тот же эффект.

Я проверил следующее:

Группы безопасности проверены: все хорошо
Разрешения IAM проверены: все хорошо
Роли IAM проверены: все хорошо URL конечной точки Redis: правильно
Ключ доступа / секрет проверен: все хорошо

Я посмотрел на логи nginx и нашел немного информации:

2019/01/11 09:24:33 [ошибка] 3826#0: *6732 восходящее соединение преждевременно закрыло соединение при чтении заголовка ответа из восходящего потока, client:, server: my.server.url, запрос: "GET /path/of/ запрос HTTP/1.1 ", восходящий поток:" http://ip.ad.dr.ess:PORT/path/of/request ", хост:" my.server.url "

У меня есть два конфига nginx. Родитель выглядит так:

 # Для получения дополнительной информации о конфигурации см.:
#   * Официальная документация на английском языке: http://nginx.org/en/docs/
#   * Официальная русская документация: http://nginx.org/ru/docs/

пользователь nginx;
рабочий_процесс 1;

error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log note;
#error_log /var/log/nginx/error.log info;

pid /var/run/nginx.pid;

События {
    рабочий_соединения 1024;
}


http {
    include /etc/nginx/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" - $ request_time X-Forwarded-For = $ http_x_forwarded_for Host = $ host';

    log_format KVP 'ip = "$ remote_addr" time = "$ time_local" request = "$ request"'
                    'status_code = $ status request_time = $ request_time'
                    'host = "$ http_host"'
                    'body_bytes_sent = $ body_bytes_sent referrer = "$ http_referer" user_agent = "$ http_user_agent" remote_user = "$ remote_user"';

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log;

    #sendfile on;
    #tcp_nopush on;

    #keepalive_timeout 0;
    keepalive_timeout 300 с;

    #gzip on;

    # Загрузите файлы модульной конфигурации из каталога /etc/path/to/conf.d.
    # См. Http://nginx.org/en/docs/ngx_core_module.html#include
    # для дополнительной информации.
    include /etc/path/to/*.conf;

    index index.html index.htm;

}

И следующий включен:

 proxy_read_timeout 300s;

limit_req_zone $ binary_remote_addr zone = api: скорость 10 м = 10r / s;


# Виртуальный хост, использующий сочетание конфигурации на основе IP, имени и порта
#

вверх по течению NAME_REMOVED {
    сервер xxx.xxx:;
}

сервер {
    слушай 80;

    название сервера;

    real_ip_header X-Forwarded-For;
    # внутренние адреса в TEST
    set_real_ip_from xx.xxx.0.0/16;
    # внутренние адреса в ПРОДУКЦИИ
    set_real_ip_from xx.xxx.0.0 / 16;

    GZIP на;
    gzip_comp_level 6;
    gzip_vary on;
    gzip_min_length  1000;
    gzip_proxied любой;
    gzip_types текст / простой текст / приложение css / приложение json / текст x-javascript / приложение xml / приложение xml /xml+rss текст / приложение javascript /javascript;
    gzip_buffers 16 8k;
    client_max_body_size 100M;

    место нахождения / {
        proxy_set_header X-Real-IP $ remote_addr;
        proxy_set_header X-Forwarded-For $ remote_addr;
        proxy_set_header Host $ http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_read_timeout 300s;
        proxy_send_timeout 300 с;
        proxy_connect_timeout 300s;

        proxy_pass http: // app;
        proxy_redirect off;

        limit_req zone = api burst = 10;
    }

    местоположение ~ /.git/ {
        отрицать все;
    }
}

Указанные выше тайм-ауты были добавлены мной, чтобы попытаться решить эту проблему, но не дали желаемого эффекта.

0 ответов

Другие вопросы по тегам