
Ich verwende Nginx unter CentOS 7. Ich möchte einen Cache-Kontrollheader für Dateien hinzufügen, die mit einer bestimmten Erweiterung enden oder die eine Zeichenfolge "/image/" in der URL enthalten. Ich habe Folgendes versucht
location / {
proxy_pass http://scale; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_uri ~* ".(ico|gif|jpe?g|png)$") | ($request_uri ~* "/image/") {
expires 60d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
break;
}
}
aber beim Neustart des Servers bekomme ich eine
invalid condition "$request_uri" in /etc/nginx/conf.d/scale.conf:16
Fehler. Wenn ich „ | ($request_uri ~* „/image/“)“ aus der problematischen Zeile entferne, wird alles wieder in Ordnung gebracht, aber dann kann ich nichts mehr mit dem abgleichen, was ich möchte. Wie schreibe ich eine richtige „or“-Anweisung in meine Konfigurationsdatei?
Antwort1
In nginx,wenn es böse istWenn Sie es aber wirklich so machen möchten, gehen Sie folgendermaßen vor:
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
Kombinieren Sie im Wesentlichen einfach die regulären Ausdrücke.