NGINX Прокси загружается очень медленно или время ожидания (504), локальный прокси работает нормально - PullRequest
0 голосов
/ 28 января 2020

У меня есть два nginx экземпляра прокси (proxyA и proxyB). Проблемы с соединением между ними.
ProxyA работает NGINX на VServer на D C в моем регионе. ProxyA предназначен для подключения к IPv4. ProxyA передает все (кроме небольшого файла индекса караоке html, который подается напрямую) на ProxyB.
ProxyB работает на моем локальном сервере только ipv6. ProxyB передает входящие запросы соответствующим службам.
Оба сервера используют TLS только с действительными сертификатами (я хочу зашифрованный трафик c между прокси-серверами). Соединение между двумя серверами управляло 180MBit / s (averge) в Iperf с пингом 4-5 мс.

Проблема, ProxyB обслуживает файлы, как и ожидалось. ProxyA, однако, производит очень медленные и неполные загрузки сайта, или прямые 504 таймаута. Я уже увеличил время ожидания, это не сильно помогло (как и ожидалось). Обслуживание файла html, хранящегося на ProxyA, работает без проблем, поэтому подключение к прокси выглядит нормально. Доступ к ProxyB напрямую загружает сайт (как указано).

Конфиг: Не изменил nginx .conf, за исключением изменения версий TLS (проблема уже существовала до этого изменения).

proxyA (vServer в D C)

server {

        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/mydomain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mydomain.tld/privkey.pem;
        server_name _;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 1h;
        location / {
                proxy_connect_timeout 120;
                proxy_send_timeout 120;
                proxy_read_timeout 120;
                send_timeout 120;
                proxy_set_header Connection "";
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_pass https://proxyA.mydomain.tld;
        }

}

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
}

proxyB (локальный, только за пределами IPv6, маршруты к приложению, пример из моего git)

server  {

        client_max_body_size 2000M;
        client_body_buffer_size 2000M;
        client_body_timeout 110;
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/mydomain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mydomain.tld/privkey.pem;
        server_name _;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 1h;
        add_header Strict-Transport-Security "max-age=17280000 ; preload";
        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_intercept_errors on;
                proxy_connect_timeout 10;

                proxy_pass http://git.mydomain.tld:3000;
        }

        error_page 501 502 503 504 /500.html;
        location /500.html {
                root /var/www/html/error;
        }

        error_page 404 /404.html;
        location /404.html      {
                root /var/www/html/error;
        }

}
...