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 で終わる場合、内部の場所ブロックが一致せず、代わりに return 403 (アクセス禁止) が実行されます。

nginx の一般的なルールは、「if」を避け、何らかの形式のパス一致が必要な場合は (ネストされた) ロケーション ブロックに依存することです。

関連情報