Miklix

Ujemanje lokacije na podlagi razširitve datoteke z NGINX

Objavljeno: 15. februar 2025 ob 1:17:18 dop. UTC

V tem članku je razloženo, kako narediti ujemanje vzorcev na podlagi datotečnih končnic v lokacijskih kontekstih v NGINX, kar je uporabno za prepisovanje URL-jev ali kako drugače ravnati z datotekami glede na njihovo vrsto.


Ta stran je bila strojno prevedena iz angleščine, da bi bila dostopna čim večjemu številu ljudi. Žal strojno prevajanje še ni popolna tehnologija, zato lahko pride do napak. Če želite, si lahko izvirno angleško različico ogledate tukaj:

Match Location Based on File Extension with NGINX

Informacije v tej objavi temeljijo na NGINX 1.4.6, ki se izvaja na strežniku Ubuntu Server 14.04 x64. Lahko velja ali ne velja za druge različice.

Nisem ravno dober v regularnih izrazih (nekaj, na čemer bi verjetno moral delati, vem), zato moram o tem pogosto prebrati, ko moram narediti več kot le najpreprostejše ujemanje vzorcev v na primer kontekstu lokacije NGINX.

Ena, ki je zelo uporabna, če morate drugače ravnati z določenimi vrstami datotek, je možnost ujemanja lokacije na podlagi pripone zahtevane datoteke. In to je tudi zelo enostavno, vaša lokacijska direktiva bi lahko preprosto izgledala takole:

location ~* \.(js|css|html|txt)$
{
    // do something here
}

Seveda lahko preprosto spremenite razširitve na tisto, kar potrebujete.

Zgornji primer ne razlikuje med velikimi in malimi črkami (ujemal se bo na primer z .js in .JS). Če želite, da razlikuje med velikimi in malimi črkami, odstranite * za ~.

Kaj boste naredili z vžigalico, je odvisno od vas; običajno bi jo prepisali v zaledje, ki izvaja nekakšno predprocesiranje, ali pa bi morda samo želeli brati datoteke iz drugih map, kot je videti javnosti, možnosti je neskončno ;-)

Delite na BlueskyDelite na FacebookuDelite na LinkedInuDelite na TumblrDelite na XDelite na LinkedInuPripni na Pinterest

Mikkel Bang Christensen

O avtorju

Mikkel Bang Christensen
Mikkel je avtor in lastnik spletne strani miklix.com. Ima več kot 20 let izkušenj kot profesionalni računalniški programer/razvijalec programske opreme in je trenutno za polni delovni čas zaposlen v veliki evropski IT korporaciji. Kadar ne piše bloga, svoj prosti čas posveča številnim interesom, hobijem in dejavnostim, kar se do neke mere odraža v raznolikosti tem na tem spletnem mestu.