불가능한 이유

먼저 결론부터 말씀드리면 nginx WebDAV라고 검색해서 나오는 대부분의 config는 WebDAV level 1입니다.
윈도우나 리눅스, raidrive 같은 프로그램에서는 문제 없이 가능하죠.
하지만 맥은 WebDAV level2를 최소 level로 요구하고 있습니다.
nginx도 dav extension을 통해 18년 말부터 정식으로 level 2를 지원하고 있습니다.
그러므로 WebDAV 설정만 level2로 변경하면 됩니다.

Nginx WebDAV 구성 시도

리버스 프록시 용도로 nginx를 설치하여 사용 중, 웹서버로 WebDAV도 구현해보기로 했습니다.
저는 코드사랑님의 WebDAV 설치 방법을 따라 만들었고, 연결이 불완전했습니다.

설치한 Nginx WebDAV 문제점: 쓰기 문제

다운로드는 가능하나 파일 업로드가 불가능했죠.
전 당연히 WebDAV 서버가 잘못된 줄 알고 권한 관련해서 알아보고, WebDAV에 쓰기가 불가능한 경우에 대해 알아봤습니다.
하지만 원인을 잘못 짚었는지, 몇 시간을 찾아봐도 해결을 보지 못했습니다.

그러다가 윈도우에서 raidrive를 통해 연결 시도해보게 되었는데, 이게 왠걸. 업로드가 가능한 것입니다.

맥에서 Qnap이나 Synology의 WebDAV에는 쓰기가 정상적으로 되던걸 생각하면 맥의 문제도 아니고, nginx의 WebDAV의 문제도 아니었음을 깨닳았죠.
원인은 맥과 Nginx WebDAV의 프로토콜이 달랐음을 깨닫게되었습니다.

macOS WebDAV 최소요구사항: level 2

구글링 해보니 WebDAV level 2 에서는 LOCK, UNLOCK 메소드가 필요하다고 합니다.
serverfault
그러면 nginx는 lock, unlock 메소드를 지원할까? WebDAV level 2를 지원할까?

nginx dav extension은 level 2를 지원합니다.

nginx dav ext 깃에 따르면 18년 12월부터 지원하기 시작했다고 합니다.
그럼 웹서버로 사용하고 있는 nginx 독커는 extension도 최신 버전이 올라가있을까? 라는 의문이 들더군요.
그래서 해당 git의 macOS를 위한 Example을 보고 따라 구현해보았습니다.

nginx WebDAV level 2 설정하기.

먼저 http 블럭을 설정해줍니다.

http {
    dav_ext_lock_zone zone=name:10m;
}

location 블럭에 아래의 내용을 추가해줍니다.

server {
  location / {
    set $x $uri$request_method;
    if ($x ~ [^/]MKCOL$) {
      rewrite ^(.*)$ $1/;
    }
    dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
    dav_ext_lock zone=name;
  }
}

이제 맥에서 자작나스의 WebDAV에 접속하실 수 있습니다.

답글 남기기

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


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock