nginx 다시 로드로 인해 다운로드가 크게 중단됩니다.

nginx 다시 로드로 인해 다운로드가 크게 중단됩니다.

저는 nginx 1.9.3을 실행하고 있습니다. 대용량 파일(이 경우 1GiB)을 다운로드하고 "nginx -s reload"를 통해 nginx를 다시 로드하면 Opera, Google Chrome 및 Firefox를 포함하되 이에 국한되지 않는 다양한 브라우저에서 다운로드가 중단됩니다.

컬 및 표준 플래그(추가 헤더 없이 파일 URL만 사용)를 사용하면 다운로드가 제대로 작동하고 중단되지 않습니다.

server {
    listen 443 ssl spdy;
    include tls.conf;
    server_name example.com;

    root /var/www/dl;

    access_log logs/dl.access.log;
    error_log logs/dl.error.log;

    error_page 403 https://example.com;
}

내가 이해한 바에 따르면 nginx 프로세스는 자체 종료되기 전에 모든 요청이 완료될 때까지 기다려야 하기 때문에 왜 이런 일이 발생하는지 완전히 확신할 수 없습니다. 누구든지 내 두뇌에 대한 추가 지식을 제공하거나 nginx 문서의 관련 지침을 알려줄 수 있다면 기꺼이 이 문제를 해결하겠습니다. :-)

답변1

읽다이 nginx 문서. 당신은 실행해야정상적인 재시작바꾸다새로고침. 단순 다시 로드로는 작업자 프로세스가 정상적으로 다시 시작되지 않습니다.

단계적으로 다시 시작하면 다음 단계가 수행됩니다.

kill -USR2 $(cat /var/run/nginx.pid)
kill -WINCH $(cat /var/run/nginx.pid.oldbin)
kill -QUIT $(cat /var/run/nginx.pid.oldbin)

편집: 음, 문서에는 실제로 다음과 같이 나와 있습니다.

우연 변경된 시간대에 맞춰 구성을 변경하고(FreeBSD 및 Linux에만 해당) 새 구성으로 새 작업자 프로세스를 시작합니다.이전 작업자 프로세스를 정상적으로 종료합니다.

그러면 kill -HUP $(cat /var/run/nginx.pid)충분합니다. nginx -s reload동일한 일을 하는 것 같습니다. 문제의 원인은 다를 것입니다.

관련 정보