Remote-statische Dateien mit symfony3 bereitstellen

8

Ich habe ein Problem mit meiner Nginx-Konfiguration. Ich habe 2 Server, einen mit nginx und einen mit meiner WebApp in symfony3. Hier ist meine Konfiguration:

%Vor%

Die webSite funktioniert für alle PHP-Skripte, aber alle Assets (statische Dateien) sind defekte Dateien. Ich verstehe nicht genug, wie Nginx funktioniert, um anzuzeigen, was die statischen Dateien sind, und meinen Proxy zu "sagen", dass sie kein Skript sind.

    
Daniel E. 18.01.2017, 13:21
quelle

2 Antworten

7

Die Direktive try_files versucht automatisch, statische Dateien zu finden und sie vor dem Aufgeben als statische Dateien zu verwenden und die Anfrage als Skript zu verarbeiten.

  • Ссылка

      

    Prüft die Existenz von Dateien in der angegebenen Reihenfolge und verwendet die erste gefundene Datei für die Anfrageverarbeitung; Die Verarbeitung wird im aktuellen Kontext ausgeführt. Der Pfad zu einer Datei wird aus dem Dateiparameter gemäß den root- und alias-Anweisungen erstellt. Es ist möglich, die Existenz eines Verzeichnisses zu prüfen, indem ein Schrägstrich am Ende eines Namens, z. "$ Uri /". Wenn keine der Dateien gefunden wurde, wird eine interne Weiterleitung an die URL vorgenommen, die im letzten Parameter angegeben wurde.

Beachten Sie, dass, obwohl Sie bereits try_files verwenden, Ihre Pfadbehandlung möglicherweise nicht der Spezifikation entspricht.

Was Ihre eigene Antwort mit einer vorübergehenden Lösung angeht, ist nichts falsch daran, eine oder zwei Neufassungen zu verwenden , aber das heißt, es sieht so aus wie Sie würde von der alias -Richtlinie profitieren.

  • Ссылка

      

    Definiert eine Ersetzung für den angegebenen Speicherort.

Sie haben jedoch nie erklärt, warum Sie Sachen aus /tmp servieren. Beachten Sie, dass /tmp oft automatisch von einigen cron Skripten gelöscht wird, zB auf OpenBSD, dem /etc/daily Skript würde automatisch find und Dateien entfernen, die älter als etwa 7 Tage sind ( auf einer daily -Basis , wie der Name schon sagt).

Zusammenfassend sollten Sie zunächst herausfinden, welche Zuordnung zwischen der Webansicht des Dateisystems und Ihrem Dateisystem besteht.

Wenn dann ein Präfix gefunden wird, verwenden Sie einfach ein separates location für die Assets zusammen mit alias .

Sonst, finde die Pfade für try_files , um wie vorgesehen zu funktionieren.

    
cnst 20.01.2017, 23:21
quelle
1

Ich habe eine sehr hässliche Lösung gefunden, bis jemand eine bessere Lösung findet, hier ist was ich getan habe:

  • Ich habe alle Assets kopiert und auf meinen Proxy-Server kopiert, wo nginx ist.

Hier ist meine neue Konfiguration:

%Vor%

Und jetzt funktioniert es, alle js / css und Bilder sind gefunden.

Wenn jemand an eine "sauberere" Antwort denkt, kann er gerne antworten.

    
Daniel E. 19.01.2017 09:16
quelle