NGINX 시간 초과를 변경할 수 없습니다.

NGINX 시간 초과를 변경할 수 없습니다.

내 Nginx 서버에서 504 시간 초과가 발생합니다 504 Gateway Time-out. 이 웹사이트에서는 사용자가 사용자 정의 데이터 파일을 다운로드할 수 있습니다. 사이트는 대부분의 조건에서 잘 작동하며 사용자는 문제 없이 일부 파일을 다운로드할 수 있습니다. 문제는 데이터 파일이 요청된 경우에만 생성된다는 것입니다. 따라서 복잡한 데이터가 요청되면 Python 백엔드가 파일을 생성하고 다운로드를 시작하는 데 1분 이상 걸립니다. 1분 이내에 응답이 없기 때문에 Nginx는 504 Gateway Time-out. 파일 자체는 CSV 파일이며 그다지 크지 않으므로 백엔드에서 파일을 생성한 후 다운로드가 빠르지만 Nginx를 더 오래 기다리게 하는 방법이 필요합니다.

Nginx 시간 초과를 1분에서 약 10분으로 늘리는 방법을 찾고 있습니다.

지금까지 나는 다음을 시도했습니다.

중괄호 nginx.conf사이에 다음 줄을 포함하도록 파일 을 변경합니다.http {}

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

나는 또한 제안한대로 timeout.conf파일을 추가하려고 시도했습니다./etc/nginx/conf.d/https://asdqwe.net/blog/solutions-504-gateway-timeout-nginx/:

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

각 변경을 수행한 후 서버를 다시 시작했지만 1분 후에도 여전히 시간 초과가 발생합니다. 이는 curl -o서비스 공급자 문제를 우회하기 위해 서버에서 실행하여 추가 테스트를 거쳤습니다 . 출력은 다음과 같습니다.

$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

그리고 이 오류는 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"

Nginx 없이 애플리케이션을 실행하고 동일하게 실행하면 curl -o요청에 꽤 오랜 시간이 걸리지만(요청한 데이터에 따라 최대 8분) 오류나 시간 초과 없이 제대로 완료됩니다.


실행하면 $ /usr/sbin/nginx -V 2>&1 | grep conf구성 파일이 다음 위치에 있음이 표시됩니다.--conf-path=/etc/nginx/nginx.conf


Nginx 버전: nginx/1.12.2 및 nginx/1.4.6(Ubuntu)

OS 버전: Ubuntu 16.04.1 및 Ubuntu 14.04.5 LTS


편집하다:

구성 파일의 다른 항목에 대한 변경 사항이 선택되었는지 확인하기 위해 구성 파일에서 작업자_프로세스 수를 변경하는 것을 테스트했으며 해당 숫자를 변경하면 작업자 수가 변경되어 파일 OS가 올바른 파일로 변경됩니다. Nginx에 의해 선택됩니다. 시간 초과(또는 전체 http 섹션?)를 변경하지 마세요. 또한 시간 초과 설정을 30초로 테스트했지만 여전히 시간 초과가 1분입니다. 또한 이러한 설정을 시도해 보았지만 sites-enabled/my_site여전히 동일한 결과가 나타납니다.

편집2:

내가 알 수 있는 한 Nginx 문서에 따라 값을 올바르게 설정하고 있습니다. uwsgi_connect_timeout

ngx_http_proxy_module

답변1

해결했어요!!

문제는 uwsgi와 관련된 것으로 밝혀졌지만 설정하는 동안

uwsgi_connect_timeout 75s;

제가 실제로 설정해야 했던 것은

uwsgi_read_timeout 600s;

관련 정보