WebDAV(Web Distributed Authoring and Versioning)는 http를 이용해 웹서버에 저장되어 있는 파일을 여러 사용자가 편집하기 위해 고안된 프로토콜입니다.
실제로는 FTP 대용으로 많이 사용되고 있으며 운영체제에서 별도의 프로그램 없이도 WebDAV를 사용할 수 있기 때문에 시놀로지등의 NAS에서도 많이 활용하는 기능중 하나입니다.
NGINX 역시 WebDAV를 지원하며 다음과 같이 설정할 수 있습니다.
목차
설정 전 준비
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 접속
http://IP주소/webdav
를넷드라이브나 레이드라이브를 통해 네트워크 드라이브로 연결한 다음 파일을 업로드하거나 다운로드할 수 있습니다.