Konfigurieren Sie nginx für die Bereitstellung von Abfragezeichenfolgenparametern

Konfigurieren Sie nginx für die Bereitstellung von Abfragezeichenfolgenparametern

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.comrootdann 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 .htmlinnerhalb Ihres Stammverzeichnisses und ist wahrscheinlich ein Fehler.

Falls Sie eine Datei index.htmlin 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.comVersuchen Sie also , eine Datei index.htmloder index.htmIhr 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.htmlsucht eine Anfrage wie diese nach einer Datei index.htmlin Ihrem Stammverzeichnis. Nginx ist großartig, nicht wahr?


Hoffe das hilft :)

Lesen Sie auch mehr überVersuchen Sie_DateienUndFallstricke und häufige Fehler bei Nginx.

verwandte Informationen