nginx se a diretiva parou de funcionar após a atualização de 0.7 para 1.0.2

1

Eu atualizei meu servidor nginx de 0.7.x para 1.0.2 e copiei o arquivo de configuração antigo para o novo servidor nginx. Tudo funcionou bem, exceto pela diretiva if. Eu tinha o seguinte bloco de código no antigo arquivo de configuração que parece não estar funcionando com a última versão do nginx.

location /myapp {
         if (!-e $request_filename) {
                rewrite  ^/myapp/(.*)$  /myapp/index.php?q=$1  last;
                break;
          }
          root /var/www;
          index index.php index.html index.htm;
 }

Alguma ideia do que está errado?

PS: Sim, eu sei IfIsEvil e tentei explorar o try_files, mas não consegui descobrir como passar apenas o parte do URI AFTER myapp / contra a passagem do enter URI para index.php da seguinte forma: try_files $uri index.php?q=$uri

    
por ErJab 15.05.2011 / 07:48

1 resposta

1

Você deseja redirecionar todas as solicitações para um front controller comum.

location / {
    index index.php;
    try_files $uri $uri/ @handler; ## If missing pass the URI to front handler
}

location @handler {
    rewrite / /index.php;
    # Rewrite for @ErJab:
    # rewrite ^/myapp/(.*)$  /myapp/index\.php?q=$1  last;
}

location ~ .php$ { ## Execute PHP scripts 
    fastcgi_pass   127.0.0.1:9000;
}
    
por 15.05.2011 / 11:20