webdav 이용, 네트워크 드라이브 연결 4 - https에서 파일명 불가 문제 해결
집에 있는 라즈베리파이를 디스크 드라이브처럼 마운트하기 위해서는 WebDAV가 매우 훌륭한 방법이다. 그런데 WebDAV를 사용하다 보면 아래 그림처럼 파일(또는 폴더) 복사, 삭제, 수정은 다 가능한데 파일명 변경만 안되는 현상이 발생한다.
이런 현상은 WebDAV를 https로 접속했을 경우만 발생하고, http로 접속할 경우는 또 괜찮다.
예를 들어 한번 보자.
1. 문제 발생 현상 확인
WebDAV로 마운트한 Z 드라이브에 폴더를 생성하고 폴더명을 변경해 보았다. 이 경우, 해당 폴더가 다른 프로그램에 의해 사용되고 있다는 에러와 함께 폴더명 변경을 실패한다.
파일명 변경을 시도했을 경우에도 에러 메시지는 좀 다르지만 실패하는 것은 마찬가지이다.
2. 문제 해결
이런 현상은 왜 발생하는 것일까?
이 컨테이너 입장에서 보면, 원래 이 WebDAV 컨테이너는 http 프로토콜 기반으로 동작하도록 만들어져 있으나, 사용자가 보안 및 사용 편의성을 위해 nginx reverse proxy를 사용하여 강제적으로 https 접속하도록 한 것이다.
그러므로 WebDAV 컨테이너에게 너한테는 https가 아닌 http로 접속한다고 알려 주어야 한다.
그럼, WebDAV 최초 설치시 Reverse Proxy 설정을 기억할 것이다.
webdav 이용, 네트워크 드라이브 연결 1 - 설치
라즈베리파이에 접속하려는 PC가 로컬 네트워크 즉 집에 존재한다면 SMB로 그냥 연결하면 된다. 하지만 회사PC에서 집에 있는 라즈베리파이에 네트워크 드라이브로 연결하고 싶다면??? 이럴 경우
www.codesarang.com
다시 그 설정 파일을 찾아보자. LetsEncrypt의 proxy-confs 폴더 아래에 drive.codesarang.com.subdomain.conf 파일로 만들어져 있다.
그 파일 내용을 아래처럼 수정하도록 한다.
원격에서 https로 접속할 경우, LetsEncrypt에서 컨테이너 접속시 헤더 정보를 http로 변경하도록 설정을 추가했다.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name drive.codesarang.com;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
include /config/nginx/proxy.conf;
set $dest $http_destination;
if ($http_destination ~ "^https://(.+)$") {
set $dest http://$1;
}
proxy_set_header Destination $dest;
resolver 172.20.0.8 valid=30s;
set $upstream_app 172.20.0.8;
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}
이제 LetsEncrypt 컨테이너를 재시작 하도록 한다.
이제, WebDAV 드라이브에서 파일 및 폴더명을 변경할 경우 정상 변경됨을 확인할 수 있다.