Puncte:0

Serviți autoindexul lui nginx pe o cale diferită

drapel il

Am întâlnit problema că aș dori să activez autoindexul lui nginx pentru unele directoare, dar pentru acelea care au și propriile fișiere index.
Așa că mă întrebam dacă există o modalitate de a face ca nginx să servească pagina sa de autoindexare pe o cale diferită. Ceva asemănător cu /path/to/dir/autoindex.html

Am incercat urmatoarele:

    locație ~* ^/path/to/dir/autoindex.html$ {
        autoindex activat;
        autoindex_format html; 

        try_files /cale/la/dir/ =404;
    }

Dar asta mă redirecționează în mod ciudat către /cale/spre/dir/ și îmi arată pagina mea de index implicită.

În plus, aș dori să păstrez acest lucru pentru folderele care nu au o pagină de index, doar astfel încât calea pentru autoindex să fie întotdeauna consecventă.

drapel us
Vă rugăm să furnizați un exemplu concret de cerere și la ce anume ar trebui să servească. Este dificil să vedeți ce adresă URL doriți să solicitați și ce index automat de cale a sistemului de fișiere doriți să primiți returnat.
drapel il
@TeroKilkanen `http://example.com/path/to/dir/autoindex.html` ar trebui să servească indexul automat al lui `$webroot/path/to/dir`
Puncte:0
drapel us

Rescrierea internă nginx ar putea fi aplicabilă aici:

locație /cale/autoindex.html {
    rescrie ^ /cale/ ultima;
}

locație / cale {
    intern; # Această locație este folosită numai pentru redirecționări interne

    autoindex activat;

    try_files $uri $uri/ =404;
}

locație ~ ^/cale {
    ... configurați ceea ce doriți să afișați cu calea
}
drapel il
Ei bine, am întrebat dacă pagina de index automat este pe o cale diferită de cea care se termină în `/`. Știu cum să activez autoindex
drapel us
Ah, ce prost din partea mea. Am actualizat raspunsul.
drapel il
Din păcate, acesta returnează un 404 pentru fiecare URI cu `/path`. Schimbarea locației în `location = /path/` repară acea parte, dar `/path/autoindex.html` returnează totuși un 404.
drapel us
Am adăugat un bloc `location` care se ocupă de cereri externe la `/path`.
drapel il
Încă 404 pentru `/path/autoindex.html`
drapel il
Chiar și schimbarea `try_files $uri $uri/ =404;` în `try_files $uri $uri/ =403;` returnează totuși un 404, spunându-mi că nu pare să lovească celălalt bloc de locație.
Puncte:0
drapel il

Am găsit o soluție destul de decentă care folosește în mod inteligent redirecționările și ordinea lor:

Server {
    # ascultă directive etc...

    root /path/to/web/root/dir;

    # Autoindex se afișează numai atunci când nginx nu își poate depune propriile fișiere index
    index xxx;

    rescrie ^(?<cale>.*)/autoindex\.html$ $cale/ ultima;
    rescrie ^(?<cale>.*)/$ $cale/index.html ultima;

    autoindex activat;

    # restul configurației serverului...
}

Singurul dezavantaj al acestui lucru este că nu puteți utiliza cu adevărat fișierele index multiple diferite index directiva acceptă în mod normal. try_files poate, de asemenea, să încurce acest lucru, deoarece trebuie să vă asigurați că pentru <cale>/ URI nginx nu poate găsi niciun fișier, așa că arată autoindexul.

Nu aș recomanda acest lucru decât pe un server sau o locație care servește doar fișiere statice.

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.