
私は、いくつかのファイルがアプリ自体によって提供されるアプリケーションを構築しています。サーバー側の設定は得意ではないので、私の 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;
}
2 番目のルールは、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 の場所は で始まることに注意してください/
。
また、各リクエストは唯一場所が異なるため、リクエストに同時に適用する必要がある場合は、両方をマージすることをお勧めします。