구체적인 디렉토리에서 nginx를 사용하여 다양한 정적 파일을 처리합니다.

구체적인 디렉토리에서 nginx를 사용하여 다양한 정적 파일을 처리합니다.

일부 파일이 앱 자체에서 제공되는 애플리케이션을 구축 중입니다. 나는 서버 측 구성에 능숙하지 않으므로 nginx 구성은 다음과 같습니다.

location ~* (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$ {
    try_files $uri $1.$3;
}

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml|txt)$ {
    access_log  off;
    expires     30d;
    root        /var/www/domain_tld/public;
}

나는 두 번째 규칙이 nginx에서 지시된 확장 기능을 제공하기 위한 것이라는 것을 알고 있으며 그것은 멋지지만 다음과 같은 규칙을 갖고 싶습니다.

/data/photos/{string}/{name}.{extension}

미리 감사드립니다

답변1

(.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$나는 당신이 다음 파일과 같은 위치 URI를 서버에 제공하기를 원한다고 가정합니다 /data/photos/$1/$2.$3.

그러면 다음과 같이 간단합니다(정규식을 약간 수정했기 때문에 모든 사례를 가능한 한 가깝게 허용 목록에 추가하는 것이 완벽할 수 있습니다).

location ~* ^/(?<string>.+)\.(?<name>\d+)\.(?<extension>js|css|png|jpg|jpeg|gif)$ {
    root /data/photos;
    try_files $string/$name.$extension =404;
}

URI 에 대한 호출은 /myString.file.ext다음의 콘텐츠를 제공합니다./data/photos/myString/file.ext

모든 nginx 위치는 /.

또한 각 요청은 다음에 의해 제공된다는 점을 기억하십시오.단 하나따라서 요청에 동시에 적용해야 하는 경우 두 위치를 모두 병합할 수 있습니다.

관련 정보