Nginx FastCGI apenas no subdiretório?

3

Eu tenho um único domínio onde a raiz é atendida por um aplicativo python executado sob o uWSGI. No entanto, preciso executar um fórum PHP em uma subpasta / forum /. Eu tenho o seguinte no arquivo de configuração apps-available :

location / { try_files $uri @oath; }
location @oath {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
}
location /forum/ {
    alias /home/drake/forum;
    index index.php;
}
location ~ /forum/(.*)\.php {
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
}

No entanto, example.com/forum/ é enviado para o aplicativo uWSGI e example.com/forum/index.php , enquanto é entregue ao FastCGI, retorna File not found. e registra o seguinte para error.log :

2013/03/03 00:10:52 [error] 28102#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 93.96.158.230, server: example.com, request: "GET /forum/index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "example.com"

O que estou fazendo de errado?

    
por Drakekin 03.03.2013 / 01:21

1 resposta

4

Seu bloco /forum/(.*)\/.php não está configurando o diretório raiz apropriado, portanto, o PHP não está localizando o script. Tente algo assim (substituindo os blocos de localização do seu fórum):

location /forum {
    root /home/drake;
    index index.php;
    location ~ \.php(?|$) {
        include /etc/nginx/fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
    }
}
    
por 05.03.2013 / 01:37