Ошибка Nginx истекла из-за превышения времени ожидания (110: Тайм-аут соединения) во время установления соединения SSL с вышестоящей - PullRequest
0 голосов
/ 12 июня 2018

В моем проекте три контейнера-докера: Nginx, tornado-app и DB.Мое приложение Tornado обслуживает приложение WebSocket (URL-адреса / clientSocket и / gatewaySocket) и приложение Django (URL-адреса - это все, кроме URL-адресов WebSocket). Я использую апстрим для обслуживания приложения торнадо (которое выполняется в порту 8000) с Nginx.Мой проект просто отлично работает в последние несколько месяцев без ошибок до сегодняшнего дня, когда я получил странные 504 ошибки от Nginx.Вот мой конфигурационный файл Nginx:

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=sms:10m rate=1r/m;

upstream my_server{
    server web_instance_1:8000;  # tornado app
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen      80;
    server_name server.com;
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl;
    server_name  server.com;
    ssl on;

    ssl_certificate /etc/nginx/ssl/chained.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;


    location / {
#        limit_req zone=one burst=5;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass      https://my_server;
    }

    location /rest/register/gateway/phone_number {
        limit_req zone=sms burst=5;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass      https://my_server;
    }

    location ~ /.well-known {
        root /var/www/acme;
        allow all;
    }

    location ~ ^/(admin|main-panel) {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass      https://my_server;
    }

    location /gatewaySocket {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_pass      https://my_server;
    }

    location /clientSocket {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_pass      https://my_server;
    }
}

и вот странные ошибки тайм-аута вверх по течению:

2018/06/12 19:23:09 [error] 5#5: *154 upstream timed out (110:Connection timed out) while reading response header from upstream,client: x.x.x.x, server: server.com, request: "GET /admin/main/serverlogs/834591/change/ HTTP/1.1", upstream:"https://172.18.0.3:8000/admin/main/serverlogs/834591/change/",host:"server.com", referrer: "https://server.com/admin/main/serverlogs/"


2018/06/12 19:23:09 [error] 5#5: *145 upstream timed out (110:Connection timed out) while reading response header from upstream,client: x.x.x.x, server: server.com, request: "GET /robots.txtHTTP/1.1", upstream:"https://172.18.0.3:8000/robots.txt",host:"server.com"


2018/06/12 19:40:51 [error] 5#5: *420 upstream timed out (110:Connection timed out) while SSL handshaking to upstream, client:x.x.x.x, server: server.com, request: "GET /gatewaySocket HTTP/1.1",upstream: "https://172.18.0.3:8000/gatewaySocket",host:"server.com:443"
...