Tenho a seguinte configuração nginx:
server {
location ~ ^/(\d+)/(\d+)/(\d+)\.png$ {
alias /mount/cache/c/$1/$2/$3.png;
try_files $uri @proxy;
add_header x-source file;
}
location @proxy {
proxy_pass http://127.0.0.1:28000;
add_header x-source proxy;
}
}
O que estou tentando fazer é tentar carregar os arquivos do disco e, se eles não forem encontrados, solicitá-los ao upstream.
Meu problema é que isso try_files
não parece funcionar, ele sempre solicita @proxy (o cabeçalho x-source é sempre proxy). Se eu comentar, try_files
ele carrega os arquivos do disco corretamente, mas a parte do proxy não funciona.
Neste exemplo você não precisa usar
alias
nada.Se você precisa de um
alias
, então não usetry_files
. Use, por exemplo,error_page
.A questão vem da sua
alias
diretiva.Suponha que um recurso
http://example.com/1/2/3.png
seja solicitado.A
alias
diretiva significa que o nginx irá procurar um arquivo em/mount/cache/c/1/2/3.png/1/2/3/.png
. Isso ocorre porquealias
define o caminho base onde os arquivos estão localizados e, em seguida, o$uri
é anexado ao get the final resource.Isso deve funcionar com esta configuração:
desde que seus arquivos estejam localizados no
/mount/cache/c
diretório.