Пропустить обратный прокси-сервер Nginx, делающий повторные запросы по тайм-ауту для определенного URL - PullRequest
1 голос
/ 17 июня 2019

Ниже приведен фрагмент кода из конфигурации nginx для приложения Rails. Сайт доступен по адресу localhost: 5478 локально. Порты 5479-82 имеют запущенные экземпляры ruby ​​для обработки трафика при обслуживании запросов. Приложение служит резервным интерфейсом API для приложений, работающих с несколькими пользователями, которые работают для нормальной работы.

Проблема в том, что при загрузке одного из листов xls из приложения импорт занимает около 5 минут, а после истечения времени работы nginx делает запрос на новый порт с тем же файлом. Это приводит к дублированию записей в БД. Увеличение таймаута не поможет, поскольку размер и содержание файла неизвестны. Я хотел бы контролировать конкретные URL, которые не должны проходить через обратный поток прокси. Должен ли я пойти на новые блоки местоположения, чтобы решить эту проблему?

 upstream rails {
    ip_hash; 
    server 127.0.0.1:5479;
    server 127.0.0.1:5480;
    server 127.0.0.1:5481;
    server 127.0.0.1:5482;
  }

server {
listen          5478 default;
server_name     _;
root            "../protac/public";
add_header X-Frame-Options "SAMEORIGIN";

location ~ ^/assets/ {
  root "../protac/public";
  expires 1y;
  add_header Cache-Control public;

  add_header ETag "";
  break;
}

location ~* /  {


  # Setup redirection headers
  proxy_set_header   X-Real-IP         $remote_addr;
  proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
  proxy_set_header   Host              $http_host;

  proxy_buffer_size   128k;
  proxy_buffers   4 256k;
  proxy_busy_buffers_size   256k;

  # Pass the request thru
  proxy_pass         http://rails;
  add_header X-Frame-Options "SAMEORIGIN";
}
...