具体的なディレクトリ内の 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;
}

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 の場所は で始まることに注意してください/

また、各リクエストは唯一場所が異なるため、リクエストに同時に適用する必要がある場合は、両方をマージすることをお勧めします。

関連情報