nginx를 사용하는 이미지의 서버에서 폴더 구조 숨기기

nginx를 사용하는 이미지의 서버에서 폴더 구조 숨기기

내 서버에는 다음과 같은 폴더 계층 구조가 있습니다.
/var/images/d/d8/d82fa6c3eed/image.png

디렉터리 구조는 MD5 해시에서 생성되고 하위 폴더로 구분됩니다.

Nginx를 사용하여 웹 사용자에게 이미지를 제공하고 싶지만 디렉터리 구조를 노출하고 싶지 않습니다. 예를 들어, 나는~ 아니다다음과 같은 파일을 제공하고 싶습니다.
http://domain.tld/d/d8/d82fa6c3eed/image.png

나는 다음과 같은 것을 제공하고 싶습니다 :
http://domain.tld/b/4324re3fg34f6td/image.png

또한 nginx secure link모듈을 사용하고 있지만 이미지를 얻으려면 다음과 같이 디렉터리를 지정해야 합니다.
http://domain.tld/b/<secure link MD5 hash>/path/to/file.png

다음과 같이 다시 작성됩니다.
http://domain.tld/images/path/to/file.png?md5=<secure link md5>

파일을 가져오기 위해 파일 시스템의 실제 특정 디렉터리 경로를 지정하고 싶지 않습니다. 나는 다음과 같은 내용을 생각하고 있었습니다.

  • 클라이언트는 파일의 디렉터리 경로를 나타내는 일종의 MD5 값을 보낼 수 있으며 NGINX는 / 모든 N 문자를 삽입합니다. 이것이 가능한가?
  • base64로 인코딩된 디렉터리 경로를 보내고 NGINX가 이를 디코딩하여 내부적으로 그곳으로 리디렉션하도록 합니다. 이?
  • 아마도 openresty 모듈과 같은 추가 모듈을 사용할 수 있을까요?

이걸 이룰 수 있을까..?

내 nginx 구성:

server {
    ..
    root /var/www/html;
    ..
    location /b/ {
        rewrite ^/b/([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_\-]+)/(.*)$ /images/$2/$3?md5=$1 last;
    }
    location /images/ {
        internal;
        secure_link $arg_md5;
        secure_link_md5 '$uri mysecretkey';
        if($secure_link = "") { return 404; }
        if($secure_link = "0") { return 410; }
    }
}

답변1

나는 사용하지 않았기 secure_link때문에 귀하의 제안 중 해당 부분에 대해 언급할 수 없습니다. 그러나 구성의 명백한 오류는 rewrite...last다시 작성된 URI가 블록에 의해 처리되기를 원하는 경우 사용해야 한다는 것입니다 location /images/. 접미사 break는 URI가 동일한 위치 내에서 처리되도록 합니다.

보다이 문서자세한 내용은.

관련 정보