Ich habe zwei Standorte in Nginx Config, die funktionieren:
location ^~ /media/ {
proxy_pass http://backend.example.com;
}
location ^~ /static/ {
proxy_pass http://backend.example.com;
}
Wie kann ich diese beiden in einem Ort kombinieren?
Was ich schon gemacht habe:
Ich habe diesen Vorschlag ausprobiert
location ~ ^/(static|media)/ {
proxy_pass http://backend.example.com;
}
aber es funktioniert nicht bei mir.
Wenn ich keine Backends verwende, funktioniert die folgende Konfiguration ordnungsgemäß:
location ~ ^/(static|media)/ {
root /home/project_root;
}
Update (einige Zeichenketten aus dem Log)
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/font-awesome/css/font-awesome.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/css/custom.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/53$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/colorbox.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Sa$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/jquery.colorbox-min.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/js/scripts.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537$
LÖSUNG
Eigentlich funktioniert meine Lösung gut:
location ~ ^/(static|media)/ {
root /home/project_root;
}
und das Problem hat nichts mit Backends zu tun. Wie Guido Vaccarella richtig bemerkte, folgte es einfach einem anderen location ~ ...
, das passte, so dass ich location ~ ...
keine Chance hatte zu rennen.
Antworten:
Laut Nginx-Dokumentation :
In Ihrer Konfiguration ist der folgende Speicherort vor dem mit dem proxy_pass definiert und entspricht der Anforderung von js- und css-Dateien unter static :
Leider deaktiviert die "log_not_found off" -Klausel die Protokollierung für alle nicht gefundenen Fehler in Bezug auf diesen Speicherort. Aus diesem Grund ist Ihr error_log leer!
Sie können versuchen, diesen Speicherort zu kommentieren oder ihn nach dem Speicherort mit dem proxy_pass zu verschieben (falls Sie ihn für andere Dateien benötigen, die nicht in static / media gespeichert sind ).
quelle
Sollte sein...
Das Schließen muss eine geschweifte Klammer {} sein, keine Klammer in Klammern ().
Ich kann nicht glauben, wie lange es gedauert hat, das zu sehen. Guido war richtig aus den Kommentaren.
quelle
|media)
in der Zeichenfolge mit "location" begonnen hat. Aber eine falsche Klammer ist hier nur ein Tippfehler (korrigiert in Frage). Andernfalls würde diese Nginx-Konfiguration nicht geladen werden und einen Fehler wie "unexpected ")"...
Sorry" auslösen.