Como obter o alias do Nginx funcionando?

1

Eu tenho isso definindo um alias (iteração mais recente):

location ~ /xxx/(.*).php($|/) {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /xxx/web/blog/xxx/$1.php;
    include fastcgi_params;
}

location ~ /xxx(.*) {
     autoindex on;
     alias /xxx/web/blog/xxx$1;
}

Para tentar definir uma instalação do wordpress no diretório xxx of xxx.com (por exemplo).

Agora, quando eu pego o caminho do PHP eu recebo o arquivo index.php baixado para o meu computador, mas assim que eu adiciono o PHP fpm, conforme definido pelo local do php, eu recebo:

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

Nos logs. Eu tentei o modo de depuração em logs de erros, mas tudo parece bem.

Eu já tenho uma localização do php:

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $uri =404;

#       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /xxx/web/live/backend/web/$fastcgi_script_name;
        include fastcgi_params;
}

Eu verifiquei a saída de /xxx/web/blog/xxx/$1.php usando return 200 "/xxx/web/blog/xxx/$1.php"; e parece perfeito.

Devo acrescentar que estive pesquisando sobre o SE por cerca de três horas e nem um único post sobre isso realmente resolveu meus problemas, incluindo:

Então, por que isso não funciona?

    
por Sammaye 08.09.2014 / 12:13

1 resposta

0

Ok, então decidi voltar ao básico aqui e fiz o meu código para:

location /xxx {
    autoindex on;
    alias /xxx/web/blog/xxx;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

E eu não tenho idéia do porquê, mas funciona, eu estou razoavelmente seguro que eu já tentei algo muito próximo disso.

Eu pensei que era porque eu adicionei: try_files $uri $uri/ /index.php?$args; , mas eu removi isso e ainda funcionou.

Se alguém puder explicar como aliases e PHP dentro deles funcionam um pouco melhor e por que isso não funcionaria para mim, então eu aceitaria essa resposta, já que é efetivamente a questão.

    
por 08.09.2014 / 13:02

Tags