Обратный прокси-сервер Nginx за балансировщиком нагрузки перестает работать через несколько часов

В моей среде в rancher я использую встроенный входной балансировщик нагрузки для маршрутизации трафика на собственный nginx, который действует как обратный прокси-сервер для двух «приложений». В условии, что я выбираю, какой сервер я хочу проксировать. Все работает нормально, но через случайное время приложение недоступно. В браузере я получаю 504 и базовое сообщение nginxAn error occurred. blah blah Faithfully yours, nginx.Я использую nginx:lts из dockerhub.

nginx

      2021/02/25 19:46:27 [error] 31#31: *789 upstream timed out (110: Connection timed out) while connecting to upstream, client: X.X.X.X, server: _, request: "GET / HTTP/1.1", upstream: "http://10.42.0.36:8080/", host: "www.example.com"
2021/02/25 19:47:27 [info] 31#31: *789 client X.X.X.X closed keepalive connection

Если я перезапущу контейнер nginx, все снова будет работать в течение нескольких часов.

конфигурация

      worker_processes                    auto;
error_log                           /dev/stdout info;
pid                                 /run/nginx.pid;

include                             /usr/share/nginx/modules/*.conf;

events {
    worker_connections              1024;
    multi_accept                    on;
}

http {
    log_format                      main    '$remote_addr - $remote_user [$time_local] "$request" '
                                            '$status $body_bytes_sent "$http_referer" '
                                            '"$http_user_agent" "$http_x_forwarded_for"';

    access_log                      /dev/stdout;

    client_body_buffer_size         10K;
    client_header_buffer_size       1k;
    client_max_body_size            100m;
    large_client_header_buffers     4 32k;
    server_names_hash_bucket_size   64;
    sendfile                        on;
    tcp_nodelay                     on;
    tcp_nopush                      on;
    keepalive_requests              1000;
    reset_timedout_connection       on;
    client_body_timeout             10;
    send_timeout                    5;
    server_tokens                   off;
    keepalive_timeout               65;
    types_hash_max_size             2048;

    include                         /etc/nginx/mime.types;
    default_type                    application/octet-stream;

    server {
        listen                      8080 default_server;
        server_name                 _;

        charset                     utf-8;
        underscores_in_headers      on;

        root                        /usr/share/nginx/html;

        location / {
            proxy_http_version      1.1;
            proxy_read_timeout      120;
            proxy_cache_bypass      true;
            proxy_no_cache          true;
            proxy_connect_timeout   20s;

            if ($http_user_agent ~ someagent) {
                proxy_pass              http://app1:8000;
            }
        
            proxy_pass              http://app2:8080;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

0 ответов

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