Докер nginx составляет задержку перенаправления - PullRequest
0 голосов
/ 17 января 2019

У меня особенно странное поведение при настройке docker-compose и nginx. Я пытаюсь получить запросы nginx proxy_pass к бэкэнд-веб-сервису. Веб-сервис Spring Boot, но я не верю, что это актуально. Мой веб-сервис выдаст редирект 302 пользователям, которые не прошли проверку подлинности, отправив их на страницу / логин. Кажется, что все это работает, как и ожидалось, за исключением неопределенного периода времени, когда я собираю docker-compose. Ранние запросы к сервису, которые приводят к 302 ответам, приводят к тайм-аутам, в то время как запросы, непосредственно направленные на страницу / login, возвращаются, как и ожидалось, немедленно. После неопределенного периода времени, обычно минут, что-то стабилизируется, и все работает как положено. Я проверил поведение, используя chrome с клиентского компьютера и свернувшись прямо на хосте, на котором работает compose. Я верю, что ответы 302 почему-то сбрасываются, но я не уверен.

Может кто-нибудь заметить проблему?

    version: '3.5'
    services:
      proxy:
        image: nginx:latest
        container_name: "proxy"
        restart: always
        volumes:
        - blah:/etc/nginx
        ports:
        - 80:80
        - 443:443

      webservice:
        image: "webservice:latest"
        container_name: "webservice"
        restart: always
        ports:
        - 8080:8080

Конфигурация Nginx:

    worker_processes auto;

    events { }

    http {

      server {

        listen 80 default_server;
        listen 443 default_server ssl;

        ssl_certificate /etc/nginx/cert;
        ssl_certificate_key /etc/nginx/key;

        if ($scheme = http) {
          return 301 https://$host:443$request_uri;
        }

        gzip on;
        gzip_types text/plain application/xml application/json     application/javascript;

        location / {
           proxy_http_version 1.1;
           proxy_pass http://webservice:8080/;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
           proxy_set_header Host                 $host:$server_port;
           proxy_set_header X-Real-IP            $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
           proxy_set_header X-Forwarded-Port $server_port;
           access_log /etc/nginx/log/access.log combined;
           error_log /etc/nginx/log/error.log warn;
        }
      }
    }
...