WebDAV(Web Distributed Authoring and Versioning)는 http를 이용해 웹서버에 저장되어 있는 파일을 여러 사용자가 편집하기 위해 고안된 프로토콜입니다.

실제로는 FTP 대용으로 많이 사용되고 있으며 운영체제에서 별도의 프로그램 없이도 WebDAV를 사용할 수 있기 때문에 시놀로지등의 NAS에서도 많이 활용하는 기능중 하나입니다.

NGINX 역시 WebDAV를 지원하며 다음과 같이 설정할 수 있습니다.

설정 환경 : 우분투 16.04 LTS

설정 전 준비

root@TUTORIAL:/# dpkg -l | grep nginx
ii nginx-common 1.10.3-0ubuntu0.16.04.2 all small, powerful, scalable web/proxy server - common files
ii nginx-full 1.10.3-0ubuntu0.16.04.2 amd64 nginx web/proxy server (standard version)
root@TUTORIAL:/#

WebDAV 설정에 앞서 설치한 NGINX 패키지의 종류를 확인해야 합니다.

NGINX는 core, common, light, full, extras 패치지로 나뉘는데 WebDAV를 사용하기 위해서는 full 또는 extras 패키지가 설치되어 있어야 합니다.

dpkg -l | grep nginx 명령어로 NGINX의 어떤 패키지가 설치되어 있는지 확인할 수 있습니다.

만일 NGINX를 컴파일로 설치했다면 위 모듈을 추가해 재컴파일 후 설치해야 합니다.

apt-get install openssl

그리고 WebDAV로 접속할 사용자 비밀번호의 암호화를 위해서 openssl 패키지가 필요합니다. 만일 설치되어 있지 않다면 위 명령어를 통해 openssl을 설치합니다.

사용자 디렉토리 설정

WebDAV를 이용해 공유할 디렉토리를 설정합니다. 디렉토리 위치는 어디든 상관없지만 www-data 유저 및 그룹에 대한 사용 권한을 가지고 있어야 합니다.

root@TUTORIAL:/home/pg# mkdir webdav
root@TUTORIAL:/home/pg# chown www-data:www-data webdav/
root@TUTORIAL:/home/pg# ll
total 32
drwxr-xr-x 4 pg       pg       4096 Apr 14 20:35 ./
drwxr-xr-x 3 root     root     4096 Dec 29 21:12 ../
-rw------- 1 pg       pg        155 Feb  4 12:19 .bash_history
-rw-r--r-- 1 pg       pg        220 Dec 29 21:12 .bash_logout
-rw-r--r-- 1 pg       pg       3771 Dec 29 21:12 .bashrc
drwx------ 2 pg       pg       4096 Dec 29 21:15 .cache/
-rw-r--r-- 1 pg       pg        655 Dec 29 21:12 .profile
-rw-r--r-- 1 pg       pg          0 Dec 29 21:16 .sudo_as_admin_successful
drwxr-xr-x 2 www-data www-data 4096 Apr 12 20:35 webdav/

예로 리눅스 사용자 기본 폴더인 /home/리눅스계정 하위에 webdav 디렉토리를 mkdir로 생성한 다음 chown 명령어로 www-data 사용자 및 그룹에 대한 권한을 설정합니다.

WebDAV 사용자 접근 권한 설정

echo "계정이름:$(openssl passwd -crypt 비밀번호)" >> /etc/nginx/.passwd.list

WebDAV 디렉토리에 접근 가능한 계정과 비밀번호를 설정합니다.

리눅스 계정과는 별개로 작동하며 위 명령어로 openssl을 통해 사용자 비밀번호를 암호화 할 수 있습니다.

지정한 계정과 암호 정보는 /etc/nginx 디렉토리에 .htpasswd 이름으로 저장됩니다.

NGINX WebDAV 설정

location /webdav {
        charset utf-8;
        alias /home/pg/webdav;
        autoindex on;
        auth_basic "WebDAV Page";
        auth_basic_user_file /etc/nginx/.passwd.list;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        dav_access user:rw group:rw;
        client_max_body_size 0;
        create_full_put_path on;
}

이제 NGINX를 WebDAV 프로토콜로 사용할 수 있게 설정합니다. sites-available/default 설정 파일의 server { } 블럭 안에 위 location 설정 코드를 추가합니다.

수정을 완료한 다음 service nginx reload 명령어로 NGINX를 재시작 합니다.

WebDAV 접속

RaiDrive를 이용해 NGINX WebDAV에 접속

http://IP주소/webdav 를 넷드라이브레이드라이브를 통해 네트워크 드라이브로 연결한 다음 파일을 업로드하거나 다운로드할 수 있습니다.

Write A Comment