Puncte:0

Configurarea locațiilor Nginx

drapel br
Vv.

Am config

locație ~ \.(pdf)$ {
    expiră 2h;
}

Locație / {
    ...reguli de backend...
}

Acum vreau ca primul bloc să fie executat doar pentru pdf-urile cu adevărat existente, altfel cererea ar fi transmisă backend-ului. Presupun că ar trebui să adaug în primul bloc de locație try_files $uri @backend:

locație ~ \.(pdf)$ {
    try_files $uri @backend;
    expiră 2h;
}

Locație / {
    ...reguli de backend...
}

locație @backend {
    ... aceleasi reguli de backend...
}

Dar se dovedește că ambele locații / și @backend vor fi absolut identice, există vreo modalitate de a le combina sau ar trebui să fac doar două blocuri identice?

drapel br
Puneți regulile backend pentru a separa fișierul și utilizați „include”.
drapel br
Vv.
Un fișier separat este o idee, dar nu vreau să adaug complexitate cu un fișier suplimentar. Există o modalitate mai elegantă?
Puncte:0
drapel gr

Ca o soluție, vă puteți scurta Locație la

Locație / {
    try_files „” @backend;
}

Acest lucru va produce un sistem suplimentar stat apelați pentru fiecare solicitare, dar din moment ce directorul dvs. rădăcină web va fi statÎn plus, aceste apeluri ar trebui să fie un fel de memorate în cache de către nucleu și nu ar trebui să aibă un impact grav asupra performanței.

PS

Nu aveți nevoie de un grup de captură pentru locația dvs. regex, doar locație ~ \.pdf$ { ... } va fi suficient (dar puțin mai performant).

Actualizați

Încă o sugestie care ar permite reducerea numărului de locații:

harta $uri $try {
    ~\.pdf$ $uri;
    <some_other_mask_to_try_locally_first> $uri;
    # valoarea implicită va fi un șir gol
}
Server {
    ...
    Locație / {
        try_files $try @backend;
    }
    locație @backend {
        ...
    }
}
drapel br
Vv.
Mulțumesc pentru ideile de aici și de pe SO. Pe paranteze - desigur, în timp ce simplificam configurația pentru întrebare, am uitat să le elimin)
Ivan Shatsky avatar
drapel gr
Verificați actualizarea răspunsului.

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.