このnginx構成の一部をデバッグできません。.pdf
ファイルのすべてのリクエストにヘッダーを追加したい
次に、不要なブラウザのキャッシュを回避するために、veiwディレクトリに追加したトークンを削除します。
location /static {
location ~* \.pdf$ {
add_header Access-Control-Allow-Origin *;
add_header Content-Disposition 'inline';
}
#Remove Anti cache token
rewrite "^/static[0-9]{10}/(.*)$" /static/$1 last;
...
}
Nginx構文エラーはありませんが、.pdf
forをリクエストすると、404 not foundエラーが表示され、リクエストに書き換えが適用されないことが示されます。
どんな助けでも大歓迎です
ありがとうございました
nginx
がlocation
を選択してリクエストを処理する場合、内部または外部のlocation
ブロックを選択できます。両方のステートメントを組み合わせることはありません。
rewrite
は、ネストされたlocation
によって継承されません。 rewrite
をすべての場所に適用する場合は、server
ブロックスコープに配置する必要があります。
rewrite
ステートメントの正規表現は十分に具体的であり、そのまま移動できます。
例えば:
rewrite "^/static[0-9]{10}/(.*)$" /static/$1 last;
location /static {
location ~* \.pdf$ {
add_header Access-Control-Allow-Origin *;
add_header Content-Disposition 'inline';
}
...
}
もちろん、両方のrewrite
ブロックでlocation
ステートメントを繰り返すだけの方が効率的です。
別のアプローチは、rewrite
を完全に回避し、正規表現location
を使用して、alias
ディレクティブを使用してアンチキャッシュトークンを削除することです。詳細は このドキュメント を参照してください。
例えば:
location ~ "^(?<prefix>/static)[0-9]{10}(?<suffix>/.*)$" {
alias /path/to/root$prefix$suffix;
location ~* \.pdf$ {
add_header Access-Control-Allow-Origin *;
add_header Content-Disposition 'inline';
}
...
}
正規表現location
ブロックは、location
ブロックの前に付ける評価順序が異なることに注意してください。詳細は このドキュメント を参照してください。
この質問に対する最良の答えは、私が問題を解決するために使用したソリューションを投稿したいものとして私がチェックしたものです。一部のリクエストにヘッダーを追加するために、ネストされたロケーションブロックを定義する必要はありません。代わりに、ifを使用して正規表現の条件を確認し、必要な処理を実行しました。
これを処理するために書いた次のブロックを見てください。
location /static {
if ( $request_uri ~* \.pdf$ ) {
add_header Access-Control-Allow-Origin *;
add_header Content-Disposition 'inline';
}
#Remove Anti cache token
rewrite "^/static[0-9]{10}/(.*)$" /static/$1 last;
...
}