
Ich habe mich gefragt, wie ich für jede Datei einen anderen Inhaltstyp bereitstellen kann.
Ich habe beispielsweise die folgende Nginx-Konfiguration:
server {
listen 80;
server_name site.com;
location ~ ^/(.*) {
root /home/site/;
try_files $uri
$uri.png
$uri.bin
=404;
}
}
$uri.png
So hat beispielsweise jeder image/png
den Inhaltstyp Header und $uri.bin
hat application/octet-stream
.
Problem: Ich weiß nicht, wie ich feststellen kann, file
wer try_files
ausgewählt hat.
Ich habe ein Lua-Modul eingerichtet und in Betrieb, falls es benötigt wird.
Hat sonst noch jemand so etwas ausprobiert?
Antwort1
Vorausgesetzt, ich habe verstanden, was Sie wollen, funktioniert das für mich:
if ($request_uri ~* \.png$) {
more_set_headers "Content-type: image/png";
}
if ($request_uri ~* \.(jpg|jpeg)$) {
more_set_headers "Content-type: image/jpeg";
}
if ($request_uri ~* \.gif$) {
more_set_headers "Content-type: image/gif";
}
Erfordert ein nicht standardmäßiges Modul, es sei denn, Nginx wurde kürzlich geändert, um der Standardfunktion add_header das Überschreiben des Inhaltstyps zu ermöglichen:http://wiki.nginx.org/HttpHeadersMoreModule
Wenn Sie es umgekehrt machen möchten (d. h. die ursprüngliche URI enthält keine Erweiterung, das Dateisystem jedoch schon), versuchen Sie, $request_uri durch $uri zu ersetzen. Dabei kann die Reihenfolge vor/nach try_files eine Rolle spielen.