web-dev-qa-db-ja.com

Nginx静的ファイルは1つまたはいくつかのファイル拡張子を除外します

Nginxを介して静的サイトを提供しています。

    location ~* \.(avi|bin|bmp|dmg|doc|docx|dpkg|exe|flv|gif|htm|html|ico|ics|img|jpeg|jpg|m2a|m2v|mov|mp3|mp4|mpeg|mpg|msi|pdf|pkg|png|ppt|pptx|ps|rar|rss|rtf|swf|tif|tiff|txt|wmv|xhtml|xls|xml|Zip)$ {
        root /var/www/html1;
        access_log off;
        expires 1d;
    }

そして私の目標は、http://connect1.webinar.ru/converter/task/のようなリクエストを除外することです。全景はhttp://mydomain.tld/converter/task/setComplete/fid/34330/fn/7c2cfed32ec2eef6788e728fa46f7a80.ppt.swfのようなものです。これらのURLはそのような形式で終了しますが、静的ではなく、偽のスクリプトリクエストであるため、問題が発生します。

これを行うための最良の方法は何ですか?このURLの除外を追加するにはどうすればよいですか、またはこのNginxの場所のリストから特定のファイル拡張子(.ppt.swf、pptx.swf)を除外できますか?

ありがとう。

2
location ~* \.(?:avi|bin|bmp| ... |(?<!\.pptx\.|\.ppt\.)swf)$ {
    root /var/www/html1;
    access_log off;
    expires 1d;
}

$ man pcrepattern
$ man pcresyntax
1
VBart

静的ファイルの場所で正規表現を使用しているので、それに!pptx?\.swf条件を追加し、条件swfを除外するだけです。

あなたの場所は次のようになります:

場所〜* \。(avi | bin | bmp | ... |!pptx?\。swf)$ {
 root/var/www/html1;
access_logoff; 
有効期限が1日; 
}

また、*.swfファイル用に別の場所を追加することを忘れないでください。

 location〜 * [0-9a-z] * \。swf $ 
 root/var/www/html1;
access_logoff; 
の有効期限が1日; 
} 
1
Max Kochubey

NGINX構成で、このコードを使用して特定のファイルまたはフォルダーを除外できます。

特定のファイルを除外したい場合は、このコードを追加してください

location / {
    rewrite ^/((?!manifest.json|pwabuildersw.js).*)$ /index.php?slug=$1 last;
}

特定のフォルダを無視したい場合はこれを追加してください

location /assets {
  # Nothing here
}

参照:- NGINXの特定のファイルまたは完全なフォルダーを無視または除外する

0
Aneh Thakur