Por que o try_files anexa cada caminho juntos?

2

Estou usando try_files assim:

http {
  server {
    error_log /var/log/nginx debug;
    listen 127.0.0.1:8080;
    location / {
      index off
      default_type  application/octet-stream;
      try_files /files1$uri /files2/$uri /files3$uri;
    }
  }
}

No log de erros, está mostrando isso:

* [error] 15077 # 0: 45399 ciclo de reescrita ou redirecionamento interno ao redirecionar internamente para "/files1/files2/files3/path/to/my/image.png", cliente: 127.0.0.1, servidor :, request: "GET /path/to/my/image.png HTTP / 1.1", host: "mydomain.com", referenciador: " link "

Alguém pode me dizer por que o nginx está procurando /files1/files2/files3/path/to/my/image.png em vez de /files1/path/to/my/image.png , /files2/path/to/my/image.png e /files3/path/to/my/image.png ?

Obrigado

    
por Tom 07.07.2012 / 22:19

2 respostas

6

link

syntax:     try_files file ... uri;
            try_files file ... =code;

O último parâmetro especifica o código de retorno ou o URI para redirecionamento interno. No seu caso, é /files3$uri .

Talvez você realmente queira isso:      try_files /files1$uri /files2$uri /files3$uri =404;

    
por 08.07.2012 / 19:03
3

Eu suspeito que o nginx é essencialmente recursivo, porque os caminhos especificados em try_files são correspondidos pelo bloco location / , que aplica a diretiva try_files novamente. Tente adicionar esses blocos de localização para capturar os caminhos que estão sendo pesquisados.

location /files1 {}
location /files2 {}
location /files3 {}
    
por 08.07.2012 / 00:58

Tags