-
-
Save 1ma/2c41d18a2add55378beb40155ecae5db to your computer and use it in GitHub Desktop.
:80 { | |
root /var/www/mempool/browser | |
handle /api/v1/* { | |
reverse_proxy 127.0.0.1:8999 | |
} | |
handle /api/* { | |
uri replace /api/ /api/v1/ | |
reverse_proxy 127.0.0.1:8999 | |
} | |
handle { | |
map {header.accept-language} {header_lang} { | |
default "en-US" | |
~^ar "ar" | |
~^cs "cs" | |
~^da "da" | |
~^de "de" | |
~^en "en-US" | |
~^es "es" | |
~^fa "fa" | |
~^fi "fi" | |
~^fr "fr" | |
~^he "he" | |
~^hi "hi" | |
~^hr "hr" | |
~^hu "hu" | |
~^it "it" | |
~^ja "ja" | |
~^ka "ka" | |
~^ko "ko" | |
~^lt "lt" | |
~^mk "mk" | |
~^nb "nb" | |
~^ne "ne" | |
~^nl "nl" | |
~^pl "pl" | |
~^pt "pt" | |
~^ro "ro" | |
~^ru "ru" | |
~^sl "sl" | |
~^sv "sv" | |
~^th "th" | |
~^tr "tr" | |
~^uk "uk" | |
~^vi "vi" | |
~^zh "zh" | |
} | |
map {cookie.lang} {lang} { | |
default {header_lang} | |
ar "ar" | |
cs "cs" | |
da "da" | |
de "de" | |
en "en-US" | |
es "es" | |
fa "fa" | |
fi "fi" | |
fr "fr" | |
he "he" | |
hi "hi" | |
hr "hr" | |
hu "hu" | |
it "it" | |
ja "ja" | |
ka "ka" | |
ko "ko" | |
lt "lt" | |
mk "mk" | |
nb "nb" | |
ne "ne" | |
nl "nl" | |
pl "pl" | |
pt "pt" | |
ro "ro" | |
ru "ru" | |
sl "sl" | |
sv "sv" | |
th "th" | |
tr "tr" | |
uk "uk" | |
vi "vi" | |
zh "zh" | |
} | |
header { | |
Cache-Control "public, no-transform, max-age=1800" | |
Vary "Accept-Language, Cookie" | |
} | |
@lang-override path_regexp ^/([a-z]{2})/ | |
handle @lang-override { | |
try_files {path} /{re.lang-override.1}/index.html /en-US{path} /en-US/index.html | |
} | |
handle { | |
try_files {path} /{lang}{path} /en-US{path} /{lang}/index.html /en-US/index.html | |
} | |
file_server | |
} | |
} |
Funciona.
He actualitzat la config a una versió nova basada en handles que em sembla més fàcil de seguir. De la documentació:
Evaluates a group of directives mutually exclusively from other handle blocks at the same level of nesting. In other words, when multiple handle directives appear in sequence, only the first matching handle block will be evaluated. A handle with no matcher acts like a fallback route.
Per tant queda primer el handle de la API "bo", després el que arregla la URL injectant /v1/, i el fallback final és per al frontend.
Cache-Control
En el nginx-mempool.conf hi han bastants expires per a URLs diferents, però no vull filar tant prim i he optat per posar el max-age a 30m com a compromís. Crec que en desplegaments privats de mempool té més sentit cachejar durant bastant de temps que expirar ràpidament.
Language override
Al nginx-mempool.conf si una URL ja vé prefixada amb l'idioma això té preferència per sobre de la cookie i del Accept-Language. Sense aquest nou handle això no era així quan el recurs no existia (e.g. /fr/macron.jpg
s'estava reescrivint a /en-US/index.html
en comptes de /fr/index.html
).
L'expressió regular de la revisió 3 era bastant infumable i pesada de mantenir.
Ara matcheja qualsevol prefix de 2 lletres minúscules, i si l'idioma no existeix prova 2 fallbacks més del segon try_files fins a arribar a /en-US/index.html en última instància.
NO TESTEJAT, aplicat de forma global el expires Cache-Control.