외부 Nginx 리버스 프록시 환경에서 넥스트클라우드의 캘린더/주소록(.well-known) 자동 탐색 오류대용량 파일 업로드 시 발생하는 504 Gateway Time-out 문제를 해결하려면, 외부 Nginx 설정 파일에 리다이렉트 블록과 타임아웃/버퍼 설정을 추가해야 합니다.

아래의 설정 단계에 따라 외부 Nginx 설정(/etc/nginx/sites-available/nextcloud)을 보완하세요.

1. 캘린더 및 주소록(.well-known) 리다이렉트 설정

모바일 기기나 데스크톱 클라이언트(CalDAV/CardDAV)가 넥스트클라우드 주소를 올바르게 찾도록 Nginx server (443) 블록 내부에 리다이렉트 규칙을 추가합니다.

  • 외부 Nginx 설정 파일의 server { listen 443 ssl; ... } 안쪽에 아래 코드를 삽입합니다.
  • 넥스트클라우드가 루트가 아닌 하위 경로가 아닌 기본 도메인 루트로 연결된다는 가정하에 설정합니다.

nginx

    # .well-known 리다이렉트 설정
    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
    }

코드를 사용할 때는 주의가 필요합니다.

2. 대용량 파일 업로드 504 타임아웃 예외 처리

대용량 파일 전송이나 동기화 시 연결이 끊기지 않도록 프록시 타임아웃 시간을 대폭 늘리고 버퍼 크기를 조정합니다.

  • 외부 Nginx 설정 파일의 location / { ... } 내부 또는 server 블록 내에 아래 내용을 추가하거나 수정합니다.

nginx

    client_max_body_size 10G;        # 업로드 최대 용량 제한 해제 (원하는 크기로 지정, 0은 무제한)
    fastcgi_buffers 64 4K;

    # 프록시 타임아웃 연장 (기본 60초에서 1시간으로 확장)
    proxy_connect_timeout 3600s;
    proxy_send_timeout 3600s;
    proxy_read_timeout 3600s;
    
    # 대용량 스트리밍 시 버퍼링 비활성화 옵션 (필요시)
    proxy_request_buffering off;

코드를 사용할 때는 주의가 필요합니다.

3. Nginx 설정 테스트 및 적용

  • 설정이 올바른지 문법을 검사합니다.
    sudo nginx -t
  • 이상이 없다면 Nginx 서비스를 다시 불러와 변경 사항을 적용합니다.
    sudo systemctl reload nginx

설정 적용 후에도 특정 파일 형식에서 오류가 발생하거나 SSL 인증서 자동 갱신(Let’s Encrypt renewal) 과정에서 리버스 프록시와 충돌이 나는지 확인이 필요하신가요?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다