try_files com um único @location?

1

Eu comecei pelo link e agora tenho isto:

    root /data/example.com;
    location /sites/default/files/ {
            try_files $uri @proxy;
    }
    location / {
            try_files @proxy;
    }
    location @proxy {
            proxy_pass http://127.0.0.1:8088;
    }

Claro, isso não é uma sintaxe válida. Como posso fazer isso funcionar? Basicamente, eu quero que sites/default/files sirva o arquivo diretamente se ele existir e use @proxy caso contrário. Outros diretórios devem ir para @proxy imediatamente. Eu não quero copiar e colar a configuração @proxy porque muito mais será adicionado lá (cache). Eu também terei outros diretórios que devem ser servidos diretamente por exemplo .well-known .

    
por chx 30.06.2016 / 01:28

1 resposta

4

Existem várias maneiras de resolver o problema:

1

Você pode colocar sua configuração de proxy em um arquivo separado e include it.

proxy_conf :

proxy_pass proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
# etc.....

e sua configuração:

location /sites/default/files/ {
   try_files $uri @proxy;
}
location / {
    include proxy_conf;
}
location @proxy {
    include proxy_conf;
}

2

Use a diretiva error_page :

location / {
    error_page 418 = @proxy;
    return 418;
}

3

Use o caminho inexistente fake como primeiro argumento para try_files :

location / {
    try_files /NONEXISTENTFILE @proxy;
}
    
por 30.06.2016 / 08:03

Tags