it-swarm.com.de

Wie konfiguriere ich URI in Nginx, um andere Webanwendungen als in der Hauptdomäne bereitzustellen?

Ich habe CMS auf domain.tld ausgeführt.

Jetzt möchte ich Nginx so konfigurieren, dass es eine andere App von domain.tld/app bedient.

CMS in der Hauptdomäne sollte keine Anfragen an domain.tld/app verarbeiten.

Kann dies im Serverblock der Haupt-App erreicht werden:

server {
   server_name domain.tld;
   root /var/www/html/domain.tld;
   ...
   location /app {
       root /var/www/html/app;
       ...
       location .php {
           ...
       }
   }
}

Und die Frage ist, was anstelle von ...

Derzeit habe ich nur den Fehler "Keine Eingabedatei angegeben" erhalten und nicht gefunden, da versucht wurde, index.php in /var/www/html/app/app/index.php zu finden.

1
user1271930

Um eine App mit einem anderen Dokumentstamm innerhalb eines Unterverzeichnisses bereitzustellen, sollten Sie den Modifikator ^~ am Präfixstandort verwenden, damit andere Speicherorte für reguläre Ausdrücke keinen Konflikt verursachen. Siehe dieses Dokument für Details.

Wenn die App PHP verwendet, können Sie einen verschachtelten Standortblock verwenden, um die verschiedenen root zu erben.

Zum Beispiel (und das ist nur ein Ausgangspunkt):

location ^~ /app {
    root /var/www/html;

    index index.php;
    try_files $uri $uri/ /app/index.php;

    location ~ \.php$ {
        try_files $uri =404;

        include       ...; # this is your system's fastcgi_params file
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass  ...; # this is a socket or IP:port for php-fpm
    }
}

Ich habe einige ... hinterlassen, da sie von Ihrer spezifischen Installation abhängen. Beachten Sie, dass root an den URI angehängt wird, um die physische Datei zu lokalisieren. Daher befindet sich /app/index.php unter /var/www/html/app/index.php.

Schließlich muss die App wissen , dass sie in einem Unterordner ausgeführt wird. Wenn Ressourcendateien angefordert werden (z. B. .js und .css), muss der URI /app/ vorangestellt werden. Andernfalls werden die Hauptressourcen der Apps geladen.

0
Richard Smith