Puncte:0

Configurați nginx pentru a servi parametrul șir de interogare

drapel jp

Avem un site NextJs, cu următorul export obținem un folder pe care vrem să îl servim de la Nginx. În ieșire/login există un „[[...parametru]].html”. Când implementăm site-ul folosind pm2, acesta funcționează dacă apăsăm adresa URL „serverIP:port/login/programID/applicant”

Dar când se servește prin nginx, nu funcționează.

Mai jos este conținutul fișierului de configurare nginx:

Server{

    asculta 7001;
    nume_server ip_server;
    rădăcină /var/www/html/out/;
   Locație / {

            try_files $uri $uri.html $uri.html/ =404;
   }

}

Te rog ajuta-ma. Sunt nou în nginx, așa că am niște dificultăți.

Puncte:0
drapel ru

Șirul de interogare se referă la parametrii GET pe care îi furnizați după adresa URL, de ex ?nume=foo. Bănuiesc că, în schimb, doriți să serviți fișiere într-un director, deoarece menționați „dosarul afară pe care vrem să îl servim de la Nginx”.


În acest caz, exemplul dvs. ar trebui să funcționeze bine, dar dvs try_files regula se așteaptă să furnizați și numele fișierului în interiorul adresei URL.

Deci, atunci când solicitați GET www.mysite.com apoi Nginx încearcă să găsească un calea în interiorul rădăcină director cu oricare nume /, .html, .html/ sau eșuează cu codul de eroare 404. cale .html/ se referă la un director numit .html în interiorul rădăcinii tale și este probabil o greșeală.

În cazul în care aveți un fișier numit index.html în directorul rădăcină specificat, atunci următoarele solicitări se potrivesc pentru el:

  • GET www.mysite.com/index.html (din cauza $uri)
  • GET www.mysite.com/index (din cauza $uri.html)

Probabil că ceea ce cauți este acesta:

Locație / {
   root /var/www/html/out;
   index index.html index.htm;
   try_files $uri $uri/ =404;
}

Aceasta face următoarele:

  • Există un fișier real, specificat de $uri, în directorul rădăcină - apoi serviți asta.
  • Există o cale de director, specificată de $uri, în directorul rădăcină?
    • Dacă da, verificați dacă conține un fișier numit index.html sau index.htm - atunci servește asta.
  • Niciuna dintre cele de mai sus, returnați 404.

Asa de OBȚINEȚI www.mysite.com ar încerca să găsească un fișier index.html sau index.htm în interiorul rădăcinii tale.


În cazul în care vă referiți totuși la șiruri de interogare, puteți scrie ceva de genul acesta:

Locație / {
    root /var/www/html/out;
    try_files /$arg_file =404;
}

Apoi cere like GET www.mysite.com?file=index.html ar căuta un fișier index.html în interiorul rădăcinii tale. Nginx este minunat, nu-i așa?


Sper că acest lucru vă ajută :)

Citiți și mai multe despre try_files și Capcanele Nginx și greșelile comune.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.