본문 바로가기
Ubuntu

Nginx 사용시 504 Gateway Timeout 뜹니다.

by Django_ 2020. 5. 19.
반응형

저는 Nginx를 사용합니다

Nginx는 빠르고 가볍다는 장점을 가지고 있다고합니다. 사용하기도 쉽습니다.

몰라도 복붙하면 그냥 작동하는것같습니다.

그러다가 여러 에러를 만나면서부터 Nginx를 찾아보기 시작하게 되었습니다 ㅎ

 

대량의 이미지를 입력 받아야하는 상황이 있었습니다

음... 간단하게 html 하나 꾸려서 

<input type="file" name="files" multiple/>

받으면

 

끝~~~~

 

이라고 생각했지만....

 

"504 Gateway Timeout" 

 

...........역시 구글링...

 

쉽게 풀어보면 클라이언트와 서버의 연결 시간이 너무 길어져서 차단했다 그런 내용입니다.

 

아무래도 서버 입장에서 누군가 발목을 잡고 안놔주면 다른일에 지장이 생기겠구나 공감이 되었습니다.

 

먼저 설정을 찾아주세요

#ubuntu
sudo vim /etc/nginx/sites-available/something

하위에 파일을 열어주세요~

그리고 시간을 조절하시면 됩니다~ 

location / {
   proxy_connect_timeout 300; #기본 60s
   proxy_send_timeout 300; #기본 60s
   proxy_read_timeout 300; #기본 60s
   send_timeout 300; #기본 60s

}

설정끝입니다~ ㅎㅎ

해당 부분에서 업로드 받는 파일의 최대 사이즈 등도 설정할 수 있습니다.

아무래도 클라이언트 단에서 검수는 그냥 코알못 분들만 검수할 뿐이기때문에 실제로는 nginx나 웹서버에서 반드시 한번 더 검증을 해야합니다. 웹서버보다 앞에있는 nginx가 검수하고 튕겨낸다면 훨씬 자원이 이득일것 같네요

 

이제 nginx를 다시시작해주시면 정상적으로 반영이 됩니다~

sudo /etc/init.d/nginx restart
or
sudo service nginx reload


[ ok ] Restarting nginx (via systemctl): nginx.service.

 

추가 내용

proxy_connect_timeout
Defines a timeout for establishing a connection with a proxied server. 
It should be noted that this timeout cannot usually exceed 75 seconds.

요약:
proxy_connect_timeout 시간은 일반적으로 75초를 초과 할 수 없습니다.

설정을 한 후에도 계속 504에러가 나와서 nginx 문서를 찾아보다가 확인한 부분입니다.

참고하시면 좋을것 같습니다~

 

 

Module ngx_http_proxy_module

Module ngx_http_proxy_module The ngx_http_proxy_module module allows passing requests to another server. Example Configuration location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } Directives

nginx.org

그래도 여전히 timeout 에러가 뜨신다면 아래 포스팅을 참고하세요~ (gunicorn)

 

 

[CRITICAL] WORKER TIMEOUT (pid:00000)

이전 포스팅처럼 timeout 에러가 떴지만 변함없이 얼마지나지 않아 timeout에러가 계속 뜨는것이였습니다. 이유를 좀 찾아봐야지. 로그를 뒤져보기 시작했습니다. 서버가 스타트되면 gunicorn worker들�

install-django.tistory.com

 

 

반응형

댓글