Nachricht "X-Accel-Mapping-Header fehlt" im Nginx-Fehlerprotokoll

8

Ich betreibe eine Rails 3 Seite auf Ubuntu 8.04 mit Nginx 1.0.0 und Passenger 3.0.7.

In meinem Nginx error.log habe ich die Nachricht X-Accel-Mapping header missing ziemlich oft gesehen. Googeln führt mich zu den Dokumenten von Rack::Sendfile und zum Nginx-Dokumente .

Nun kann meine App über mehrere Domains erreicht werden und ich benutze send_file in meiner App, um einige Dateien zu liefern, die für die Domain spezifisch sind, von der sie angefordert werden, zB wenn du zu domain1.com/favicon.ico kommst in public/websites/domain1/favicon.ico . Das funktioniert gut und ich glaube nicht, dass ich Nginx involvieren muss oder möchte und erstelle einen privaten Bereich, in dem ich diese Dateien ablege, wie die Beispiele in der Rack::Sendfile docs vorschlagen.

Wie kann ich die Fehlermeldung loswerden?

    
Manuel Meurer 04.06.2011, 13:32
quelle

2 Antworten

14

Diese Nachricht bedeutet, dass Rack::Sendfile deaktiviert X-Accel-Redirect für Sie ist, weil Sie in nginx.conf ... keine Konfiguration dafür haben ...

Ich benutze Nginx + Passagier 3 + Rails 3.1 .

Informationen von diesen Seiten gesammelt Ich habe es herausgefunden:

Ссылка

Ссылка

Ссылка

Große Dateien über Nginx bereitstellen via Rails 2.3 Verwendung von x-sendfile

Ich habe einen Controller, der /download/1 -Anfragen auf Speicherdateien ablegt, die eine eigene Verzeichnisstruktur haben, zB: storage/00/00/1 , storage/01/0f/15 usw. Also muss ich dies über Rails weitergeben, aber dann muss ich% verwenden co_de% Methode, die send_file verwendet, um die endgültige Datei an den Browser über nginx direkt zu senden.

Innerhalb des Codes habe ich Folgendes:

%Vor%

Ich habe den Dateinamen für dieses Beispielzwecke ersetzt

Nun musste ich diese Zeilen zu meinem X-Accel-Redirect hinzufügen:

%Vor%

Der Pfad nginx.conf ist von der Außenwelt nicht sichtbar, er ist nur intern.

/storage erhält den Header Rack::Sendfile , extrahiert den Pfad daraus und ersetzt X-Accel-Mapping durch /var/www/shared/storage . Dann spuckt es den modifizierten Header aus:

%Vor%

wird dann von nginx verarbeitet.

Ich kann sehen, dass dies korrekt funktioniert, da die Datei 100x schneller als zuvor heruntergeladen wird und in den Protokollen kein Fehler angezeigt wird.

Hoffe, das hilft.

    
Dalibor Filus 23.05.2017 11:53
quelle
1

Wir haben die ähnliche Technik wie NoICE beschrieben, aber ich ersetzte das "hart codierte" Verzeichnis, das alle Dateien mit dem regulären Ausdruck enthält, der den Ordner beschreibt, der die Ordner enthält, die die Dateien enthalten / em>.

Klingt schwer, ja? Schauen Sie sich diese an ( /etc/nginx/sites-available/my.web.site ):

%Vor%

Dies sollte mit dieser Überprüfung verwendet werden:

%Vor%

um die Statik von der Rails-Verarbeitung zu verhindern.

    
shybovycha 14.11.2012 11:01
quelle

Tags und Links