Por que o nginx não gosta dos meus $ args?

2

Eu tenho um site WordPress localizado em mysite.com/blog , cujos arquivos estão localizados em /var/www/mysite/wordpress . Por que, quando visito mysite.com/blog/test , meu bloco de localização aninhado só é atingido se eu remover $args de try_files ?

server {
    server_name mysite.com;

    location /blog {
        alias /var/www/mysite/wordpress;
        try_files $uri $uri/ /blog/index.php$args;

        location ~ \.php {
            # This is only reached if I remove $args from try_files
            return 401; # For testing purposes 
        }
    }
}

Aqui está o erro associado no log:

"/usr/share/nginx/html/index.php" failed (2: No such file or directory)

    
por Jonathan 06.11.2014 / 20:00

1 resposta

5

Porque você esqueceu o ? entre index.php e $args . A variável de conveniência $is_args contém um ? quando necessário e está vazia quando não havia nenhuma sequência de consulta.

try_files $uri $uri/ /blog/index.php$is_args$args;

É claro que, com o WordPress, você não precisa usar $args , pois ele obtém a string de consulta em outro lugar:

try_files $uri $uri/ /blog/index.php;

é suficiente.

Parece que você está usando a diretiva try_files with alias . Isso é um bug de longa data no nginx, use a diretiva root .

    
por 06.11.2014 / 20:08