nginx에 대한 시간 초과를 비활성화하는 방법은 무엇입니까?


46

로컬 개발 시스템에는 다음과 같은 nginx 리버스 프록시 가 있습니다.

server {
  listen 80;
  server_name myvirtualhost1.local;
  location / {
    proxy_pass http://127.0.0.1:8080;
}

server {
  listen 80;
  server_name myvirtualhost2.local;
  location / {
    proxy_pass http://127.0.0.1:9090;
}

그러나 응용 프로그램을 디버깅하면 응답이 무한정 지연 될 수 있지만 30 초 후에는 다음과 같은 결과가 나타납니다.

504 Gateway Time-out

응답으로.

시간 초과를 비활성화하고 리버스 프록시가 응답을 영원히 기다리도록하려면 어떻게해야합니까? 그리고 설정이 전역적인 것을 좋아하므로 각 프록시에 대해 설정할 필요가 없습니다.


1
백그라운드 작업을 시작하고 사용자가 나중에 상태를 확인하도록하십시오.
Michael Hampton

답변:


60

전혀 비활성화 할 수는 없지만 실행 가능한 방법은 실행 시간을 늘리는 것입니다. 켜짐 의 nginx 튜토리얼 사이트 , 그것은 작성되었습니다 :

서버의 모든 사이트에 대한 시간 제한을 늘리려면 기본 nginx.conf파일을 편집 할 수 있습니다 .

vim /etc/nginx/nginx.conf

http {..} 섹션에 다음을 추가하십시오.

http {
     fastcgi_read_timeout 300;
     proxy_read_timeout 300;
}

nginx의 구성을 다시로드하십시오.

sudo service nginx reload

내가 일어날 가능성이 오히려 큰 값을 사용하고, 즉, 999999또는 사용하는 시간 단위를 통해 어느 날, 1d.

값을 설정하면 0게이트웨이 시간 초과 오류가 즉시 발생합니다.


3
임의의 downvoter에게,이 연습에 대한 나쁜 점에 대한 의견은 좋을 것입니다.
k0pernikus

7
@kb. 내가 OP 인 것처럼 재미 있고 실제 솔루션을 기다리는 동안 가장 실행 가능한 해결책을 답변으로 게시했습니다 ^^
k0pernikus

2
하하, 난 당신이 OP 인 것을 완전히보고 싶었습니다. 그러나 당신의 대답은 맞습니다. 당신은 그것을 비활성화 할 수있는 방법이 없다는 것을 더 명확하게 만들 수 있습니다 (나 같은 미래의 Google 직원에게). =)
kb.

5
0작동하지 않는 정보에 감사드립니다 ! 참고 당신이 읽을 수있는 접미사 시간 단위를 지정할 수 있습니다 당신은 같은 값을 사용할 수 있도록, 1d.
실제 이름이 수정

3
proxy_connect_timeout 600;파일과 nginx.conf 파일 에 모두 추가 했지만 시간 초과는 여전히 60 초입니다. 내가 시도해야 할 것이 있습니까?
andreszs

9

AWS 및 Load Balancer를 사용하는 경우 유휴 시간 초과를 편집해야합니다. 기본값은 60 초라고 생각합니다


나는 이것이 왜 투표에 실패했는지 이해 하지만 유스 케이스를 설명하기 위해 답변이 업데이트되면 더 유용 할 것입니다. 이것이 OP에 응답하지는 않지만 ELB를 사용하는 경우 연결을 유지하는 시간에 제한이 있으므로 고려하는 것이 좋습니다.
doz87

@ doz87 예, 그것은 단지 고려할만한 것입니다
szeljic

이것은 특히 AWS에서 Magento와 함께 작업하는 경우에 특히 가치가 있습니다. 좋은 점 @ szeljic
vnpnlz 8

감사합니다. EC2 인스턴스에 배포하기 위해 AWS로드 밸런서를 사용하기 때문에이 기능이 효과적입니다.
Vũ Thành Tâm

이를 통해 모든 공감대가 필요합니다. AWS 사용자는 NGINX 설정에 관계없이 60 초로 제한됩니다.
Aphire

4

nginx 502 시간 초과 오류와 싸우고 있으며 문제를 해결할 수 없습니다. 그러나 시간 초과 오류의 원인이 gunicorn이었습니다. 따라서 fastcgi 설정을 확인해야 할 수도 있습니다.

gunicorn의 경우 :

gunicorn wsgi:application --timeout 300
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.