Wir haben eine NextJs-Site, mit dem nächsten Export erhalten wir einen Out-Ordner, den wir von Nginx aus bedienen möchten. In Out/Login gibt es einen '[[...parameter]].html'. Wenn wir die Site mit pm2 bereitstellen, funktioniert es, wenn wir die URL "ServerIP:Port/Login/ProgramID/Bewerber" aufrufen.
Aber wenn es über Nginx bereitgestellt wird, funktioniert es nicht.
Unten ist der Inhalt der Nginx-Konfigurationsdatei:
Server{
listen 7001;
server_name server_ip;
root /var/www/html/out/;
location / {
try_files $uri $uri.html $uri.html/ =404;
}
}
Bitte helfen Sie. Ich bin neu bei Nginx und habe daher einige Schwierigkeiten.
Antwort1
Die Abfragezeichenfolge bezieht sich auf GET-Parameter, die Sie z. B. nach der URL angeben ?name=foo
. Ich vermute, dass Sie stattdessen Dateien in einem Verzeichnis bereitstellen möchten, da Sie „Out-Ordner erwähnen, den wir von Nginx aus bereitstellen möchten“.
In diesem Fall sollte Ihr Beispiel gut funktionieren, aber IhrVersuchen Sie_DateienRegel erwartet, dass Sie in der URL auch den Dateinamen angeben.
Wenn Sie also GET anfordernwww.meinesite.comroot
dann versucht Nginx, einen Pfad innerhalb des Verzeichnisses mit dem Namen /
, zu finden .html
, .html/
oder schlägt mit dem Fehlercode 404 fehl. Pfad .html/
verweist auf ein Verzeichnis mit dem Namen .html
innerhalb Ihres Stammverzeichnisses und ist wahrscheinlich ein Fehler.
Falls Sie eine Datei index.html
in Ihrem angegebenen Stammverzeichnis haben, würden die folgenden Abfragen darauf zutreffen:
GET www.mysite.com/index.html
(wegen$uri
)GET www.mysite.com/index
(wegen$uri.html
)
Sie suchen wahrscheinlich Folgendes:
location / {
root /var/www/html/out;
index index.html index.htm;
try_files $uri $uri/ =404;
}
Dies bewirkt Folgendes:
- Gibt es eine tatsächliche Datei, angegeben durch$uri, in Ihrem Stammverzeichnis – und stellen Sie dies bereit.
- Gibt es einen Verzeichnispfad, angegeben durch$uri, in Ihrem Stammverzeichnis?
- Wenn ja, überprüfen Sie, ob es eine Datei namensHauptseiteoderindex.htm- dann servieren Sie dies.
- Keines der oben genannten, gibt 404 zurück.
GET www.mysite.com
Versuchen Sie also , eine Datei index.html
oder index.htm
Ihr Stammverzeichnis zu finden.
Falls Sie immer noch Abfragezeichenfolgen meinen, könnten Sie etwa Folgendes schreiben:
location / {
root /var/www/html/out;
try_files /$arg_file =404;
}
Dann GET www.mysite.com?file=index.html
sucht eine Anfrage wie diese nach einer Datei index.html
in Ihrem Stammverzeichnis. Nginx ist großartig, nicht wahr?
Hoffe das hilft :)
Lesen Sie auch mehr überVersuchen Sie_DateienUndFallstricke und häufige Fehler bei Nginx.