Puncte:2

403 în nginx când accesați un director

drapel cn

Am creat un server foarte simplu pentru a testa cum se comportă o adresă URL cu folder în nginx. Nginx rulează în docker (nginx: ultima imagine).Nginx rulează utilizatorul nginx (setat implicit /etc/nginx/nginx.conf).

Server {
        nume_server example.com;

        locație /test/ {
                rădăcină /var/www/test;
                index index.html;
        }
}

si aceasta structura:

/var/www
âââ test
    âââ index.html

cat /var/www/test/index.html
Test

ls -l /var/ | grep www
drwxr-xr-x 3 root root 4096 15 ianuarie 23:33 www

ls -l /var/www/test/
-rw-r--r-- 1 rădăcină rădăcină 7 ianuarie 15 21:08 index.html

Acum am aceasta problema:

curl http://example.com/test/
<html>
<head><title>403 Interzis</title></head>
<corp>
<center><h1>403 Interzis</h1></center>
<hr><center>nginx/1.21.5</center>
</corp>
</html>
curl http://example.com/test
<html>
<head><title>301 mutat permanent</title></head>
<corp>
<center><h1>301 mutat permanent</h1></center>
<hr><center>nginx/1.21.5</center>
</corp>
</html>

Mă aștept să văd „Test” când accesez http://example.com/test sau http://example.com/test/. ce fac greșit?

Puncte:0
drapel us

Două lucruri separate se întâmplă.

nginx adaugă URI-ul cererii la sfârșitul căii de rădăcină directivă la adresarea cererii. În cazul dvs., adresa URL este, http://example.com/test, URI-ul normalizat este /Test si al tau rădăcină este /var/www/test.

Acest lucru face ca nginx să caute index.html în /var/www/test/test/index.html.

Pentru a face serverul nginx /var/www/test/index.html, trebuie să utilizați fie:

rădăcină /var/www;

sau

alias /var/www/test;

Folosind rădăcină este calea preferată.

Pentru http://example.com/test parte, nginx trimite o redirecționare 301 către http://example.com/test/ când există un director Test pe server.Întrebarea ta nu arată care este rădăcină directivă la nivelul superior, deci nu știu în ce cale există existența Test este bifat.

PhilHarmonie avatar
drapel cn
Dar de ce nu văd 404 pentru `/var/www/test/test/index.html`?
drapel us
De fapt, nginx returnează 403 pentru `http://example.com/test/` și 404 pentru cererea `http://example.com/test/index.html` cu configurația dvs. curentă. De ce exact nginx funcționează așa, nu știu.

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.