Nginx 화이트리스트 파일 확장자

Nginx 화이트리스트 파일 확장자
 server {
    listen  80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

server_name public;
root /var/www/public;

location = /gameserver/
{
root /var/www/public/gameserver;
index index.html;
    if ($request_filename !~* [pk3]$)
    {
        rewrite ^ /404.html;
    }
}

}

저는 Nginx를 처음 접했고 지금 몇 시간 동안 노력했지만(Google 및 설명서 읽기) nginx에서 .pk3을 제외한 모든 파일 확장자를 거부하는 방법을 알 수 없습니다.

/var/www/gameserver/는 .pk3만 다운로드할 수 있는 공생 링크를 가리킵니다.

이것은 돈을 들이지 않고도 친구들과 즐거운 시간을 보낼 수 있는 작은 게임 서버가 될 것입니다.

시간 내 줘서 고마워,

비탈리

답변1

다음과 같이 중첩된 위치를 사용하여 이를 달성할 수 있습니다.

위치 /게임서버/ {
    루트 /var/www/public;
    색인 index.html;
    위치 ~ \.pk3$ {
    }
    403을 반환합니다.
}

nginx는 음의 정규식 일치를 지원하지 않기 때문에 빈 위치 블록은 의도적이며 필수입니다. 파일이 /gameserver/ 아래에 있고 .pk3으로 끝나면 빈 위치 블록이 일치하고 요청이 승인됩니다. 물론 여기에 추가 지시어를 추가할 수도 있습니다. 파일이 /gameserver/ 아래에 있고~ 아니다.pk3으로 끝나면 내부 위치 블록이 일치하지 않고 대신 반환 403(액세스 금지)이 실행됩니다.

nginx의 일반적인 규칙은 "if"를 피하고 어떤 형태의 경로 일치가 필요한 경우 (중첩된) 위치 블록에 의존하는 것입니다.

관련 정보