Вернуть ответ непосредственно пользователю, используя многослойный Nginx для балансировки нагрузки - PullRequest
0 голосов
/ 19 февраля 2019

Запросы сбалансированы верхним слоем nginx:

upstream balancer {
 server nginx0:444;
 server nginx1:445;
}
server {
 listen 80 default_server;

 server_name test.server.name;
 if ($host = test.server.name) {
     return 301 https://$host$request_uri;
 }
 return 404;
}

server {
 listen 443 ssl http2;

 server_name   www.test.server.name;
 root          /var/www/test.server.name;
 index         index.html;

 location / {
   proxy_pass https://balancer;
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header realip $remote_addr;
 }
 ssl_certificate /etc/letsencrypt/live/fullchain.pem; # manage
 ssl_certificate_key /etc/letsencrypt/live/privkey.pem; # mana
}

На следующем уровне есть еще две конфигурации nginx, которые обеспечивают кэширование:

upstream apibackend {
 server back1;
 server back2;
}
server {
 listen 444 ssl http2;
 listen 445 ssl http2;

 server_name   www.test.server.name;
 root          /var/www/test.server.name;
 index         index.html;

 proxy_set_header HOST $host;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Real-IP $remote_addr;

  proxy_cache name_cache;
  proxy_cache_revalidate on;
  proxy_cache_use_stale updating;
  proxy_cache_background_update on;
  proxy_cache_valid any 5m;

  location /api/ {
  proxy_pass http://apibackend/api/;
 }

Вопрос заключается в следующем:Есть ли возможность вернуть ответ непосредственно от нижних уровней?Отладка говорит, что ответ сначала отправляется верхнему балансировщику, а затем только пользователям

...