카테고리 없음

webdav 이용, 네트워크 드라이브 연결 4 - https에서 파일명 불가 문제 해결

꼬망토끼 2020. 7. 16. 08:58

집에 있는 라즈베리파이를 디스크 드라이브처럼 마운트하기 위해서는 WebDAV가 매우 훌륭한 방법이다. 그런데 WebDAV를 사용하다 보면 아래 그림처럼 파일(또는 폴더) 복사, 삭제, 수정은 다 가능한데 파일명 변경만 안되는 현상이 발생한다.

 

이런 현상은 WebDAV를 https로 접속했을 경우만 발생하고, http로 접속할 경우는 또 괜찮다.

 

예를 들어 한번 보자.

 

1. 문제 발생 현상 확인

WebDAV로 마운트한 Z 드라이브에 폴더를 생성하고 폴더명을 변경해 보았다. 이 경우, 해당 폴더가 다른 프로그램에 의해 사용되고 있다는 에러와 함께 폴더명 변경을 실패한다.

 

파일명 변경을 시도했을 경우에도 에러 메시지는 좀 다르지만 실패하는 것은 마찬가지이다.

 

2. 문제 해결

이런 현상은 왜 발생하는 것일까? 

 

이 컨테이너 입장에서 보면, 원래 이 WebDAV 컨테이너는 http 프로토콜 기반으로 동작하도록 만들어져 있으나, 사용자가 보안 및 사용 편의성을 위해 nginx reverse proxy를 사용하여 강제적으로 https 접속하도록 한 것이다.

 

그러므로 WebDAV 컨테이너에게 너한테는 https가 아닌 http로 접속한다고 알려 주어야 한다.

 

그럼, WebDAV 최초 설치시 Reverse Proxy 설정을 기억할 것이다.

https://www.codesarang.com/42

 

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 드라이브에서 파일 및 폴더명을 변경할 경우 정상 변경됨을 확인할 수 있다.