Nginx zum Hosten der App an einem anderen Ort [geschlossen]

9

Ich versuche, CachetHQ in nginx + php-fpm an einem bestimmten Ort bereitzustellen. Die Dokumentation gibt dies als Beispiel, das in status.example.com (was funktioniert) dient:

%Vor%

Anstatt jedoch in status.example.com zu dienen, möchte ich in example.com/status dienen.

Ich hatte erwartet, dass dies funktionieren würde, aber von error.log sehe ich, dass es /etc/nginx/htmlindex.php versucht, aber es sollte /mnt/data/site/www-cachet/public/index.php sein:

%Vor%     
rodorgas 09.10.2015, 19:55
quelle

3 Antworten

0

Nach so vielen Stunden, in denen ich viele Kombinationen ausprobierte, war die Art, wie ich es funktionierte:

%Vor%

Das Wichtigste war fastcgi_param , ich musste es auf einen absoluten Pfad setzen anstatt auf $document_root$fastcgi_script_name oder ähnliches. Ich bin mir nicht sicher, ob es eine gute Praxis ist, aber das Hinzufügen von alias zum Block funktioniert einfach nicht, und weder nginx noch FastCGI zeigen uns den Pfad der Datei, die sie zu lesen versuchen.

Trotzdem konnte ich CachetHQ nicht gut arbeiten lassen. Problem ist, dass alle Pfade im Quellcode absolut sind, so dass sie nicht auf das Unterverzeichnis zeigen, in dem sich unsere Dateien befinden. Die Lösung war, etwas zu tun, was ich seit Beginn nicht wollte: hosten Sie es in einer Subdomain.

    
rodorgas 17.10.2015, 01:18
quelle
2

Lassen Sie mich mit der ursprünglichen Konfiguration beginnen, die Ihrer Meinung nach funktioniert, und versuchen Sie, sie für Ihre Anforderungen und die Ergebnisse zu ändern:

%Vor%

Im Grunde wollen Sie alias statt root hier, und wahrscheinlich auch einen absoluten Pfad in dem haben final try_files ebenfalls. Ich denke nicht, dass das Hinzufügen von zusätzlichen Präfixen in geschachtelten Speicherorten erforderlich ist, aber Sie sollten sicherstellen, dass der Root-Speicherort eine endgültige Übereinstimmung mit dem ^~ -Modifikator darstellt.

Der Haupttrick ist, denke ich, dass sogar mit der alias Direktive die Dinge nicht so gut sind wie bei einem richtigen root , also musst du sicherstellen, dass SCRIPT_FILENAME richtig gesetzt ist. Dieser Teil scheint nicht ganz klar zu dokumentieren, und ich bin zu faul, um zu testen, ob $fastcgi_script_name NGX Variable und fastcgi_index Richtlinie schön spielen mit alias - anstatt zu bestimmen versuchen, wie diese Arbeit (oder auch nicht), wir ein paar rewrite Vorschriften wie einfach tun, und konstruieren SCRIPT_FILENAME basierend auf den Ergebnissen stattdessen unserer Regeln zum Umschreiben. : -)

Allerdings würde ich denken, dass die zweite Rewrite-Regel (ebenso wie die fastcgi_index , die sie ersetzt) ​​auch ein No-Op sein könnte, denn wie sollten wir in einem \.php$ enden? location wenn $uri nicht bereits in .php endet? (Ebenso sind Sie frei zu versuchen, die erste Rewrite-Regel zu entfernen, auch, und ersetzt $uri in SCRIPT_FILENAME mit $fastcgi_script_name , und sehen, ob noch Dinge funktionieren, aber das Internet from 2009 kann darauf hindeuten, dass sie nicht.)

    
cnst 13.10.2015 06:20
quelle
2

Ihre try_files ist nicht korrekt.
Du kannst es so machen:

%Vor%     
zywj 13.10.2015 01:47
quelle

Tags und Links