Não é possível alterar o tempo limite do NGINX

Não é possível alterar o tempo limite do NGINX

Estou recebendo um tempo limite 504 no meu servidor Nginx: 504 Gateway Time-out. O site permite que os usuários baixem arquivos de dados personalizados. O site funciona bem na maioria das condições e os usuários podem baixar alguns arquivos sem problemas. O problema é que os arquivos de dados só são gerados quando solicitados. Portanto, quando dados complexos são solicitados, o backend do Python leva mais de um minuto para gerar o arquivo e iniciar o download. Como não há resposta em um minuto, o Nginx retorna um arquivo 504 Gateway Time-out. Os arquivos em si são arquivos CSV e não muito grandes, portanto os downloads são rápidos depois que o backend gera o arquivo, mas preciso de uma maneira de fazer o Nginx esperar mais.

Estou procurando uma maneira de aumentar o tempo limite do Nginx de 1 minuto para cerca de 10 minutos.

Até agora eu tentei:

alterando o nginx.confarquivo para incluir as seguintes linhas entre http {}chaves

uwsgi_connect_timeout 75s;
proxy_connect_timeout 600;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;

Eu também tentei adicionar um timeout.confarquivo /etc/nginx/conf.d/conforme sugerido porhttps://asdqwe.net/blog/solutions-504-gateway-timeout-nginx/:

proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600; 

Depois de fazer cada alteração, reiniciei o servidor, mas o tempo limite ainda ocorre após 1 minuto. isso foi testado posteriormente executando um curl -ono servidor para contornar quaisquer problemas do provedor de serviços. A saída foi a seguinte.

$curl -o out-put-file.csv "./localhost/my/url"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   183   100   183   0    0       3      0  0:01:01  0:01:00  0:00:01    48

E esse erro é gravado em error.log

2018/03/26 09:55:15 [error] 10105#10105: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 142.1.2.3, server: localhost, request: "GET /my/url", upstream: "uwsgi://unix:/tmp/my-applacation.sock", host: "142.1.2.3"

Quando executo meu aplicativo sem Nginx e executo o mesmo, curl -oa solicitação demora um pouco (até 8 minutos dependendo dos dados solicitados), mas é concluída corretamente, sem erros ou tempo limite.


A execução $ /usr/sbin/nginx -V 2>&1 | grep confmostra que o arquivo de configuração está localizado em--conf-path=/etc/nginx/nginx.conf


Versão Nginx: nginx/1.12.2 e nginx/1.4.6 (Ubuntu)

Versão do sistema operacional: Ubuntu 16.04.1 e Ubuntu 14.04.5 LTS


Editar:

Eu testei alterar o número de trabalhadores_processes no arquivo de configuração apenas para ter certeza de que as alterações em outras coisas no arquivo de configuração foram detectadas e com certeza alterar esse número altera o número de trabalhadores para que o arquivo seja o arquivo correto e mude para ser pego pelo Nginx. Apenas não altera os tempos limite (ou talvez a seção http completa?). Também testei definir os tempos limite para 30 segundos, mas eles ainda atingem o tempo limite em 1 minuto. Além disso, tentei colocar essas configurações, sites-enabled/my_sitemas ainda obtive os mesmos resultados.

Editar2:

Pelo que sei, estou definindo os valores corretamente de acordo com a documentação do Nginx. uwsgi_connect_timeout

ngx_http_proxy_module

Responder1

Eu resolvi isso!!

O problema acabou por estar relacionado ao uwsgi, enquanto eu tinha definido

uwsgi_connect_timeout 75s;

o que eu realmente precisava definir era

uwsgi_read_timeout 600s;

informação relacionada