nginx, alias, php-fpm = Archivo no encontrado

10

Estoy tratando de configurar nginx con DAViCal. Sin embargo, recibo un "Archivo no encontrado" con un "FastCGI enviado en stderr:" Script primario desconocido "en el registro. Parece que algo está mal con mi alias pero estoy seguro de que no puedo resolverlo.

Mi anfitrión virtual:

server {
listen   80; ## listen for ipv4; this line is default and implied
listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

root /var/www-data;
index index.html index.htm index.shtml index.php;

# Make site accessible from http://localhost/
server_name just.a.server;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.html;
    ssi on;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}
location ~ \.php$ {
    #try_files  $uri =404;
    include /etc/nginx/fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
}

location /kalender {
    alias  /usr/share/davical/htdocs;
}

}

My fastcgi_params

fastcgi_param   QUERY_STRING        $query_string;
fastcgi_param   REQUEST_METHOD      $request_method;
fastcgi_param   CONTENT_TYPE        $content_type;
fastcgi_param   CONTENT_LENGTH      $content_length;

fastcgi_param   SCRIPT_FILENAME     $request_filename;
fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
fastcgi_param   REQUEST_URI     $request_uri;
fastcgi_param   DOCUMENT_URI        $document_uri;
fastcgi_param   DOCUMENT_ROOT       $document_root;
fastcgi_param   SERVER_PROTOCOL     $server_protocol;

fastcgi_param   GATEWAY_INTERFACE   CGI/1.1;
fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR     $remote_addr;
fastcgi_param   REMOTE_PORT     $remote_port;
fastcgi_param   SERVER_ADDR     $server_addr;
fastcgi_param   SERVER_PORT     $server_port;
fastcgi_param   SERVER_NAME     $server_name;

fastcgi_param   HTTPS           $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS     200;

Esperando tu respuesta.

Martín
fuente
htdocs es 777 por cierto
Martin

Respuestas:

20

Arreglado. Resulta que debes incluir el bit php debajo de cada bloque de ubicación.

location /calender {
    alias  /usr/share/davical/htdocs;

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

}
Martín
fuente
¡Impresionante, hay una manera de "incluir" esto, de lo contrario, debe cambiar las cosas de php para cada ubicación!
Sandro Antonucci
Esto no funcionará en todos los sistemas operativos y todas las versiones. todo depende fastcgi_param SCRIPT_FILENAMEy el hecho es que se establece fastcgi_paramso fastcgi.confve esto y esto
hrvoj3e
1

Descubrí que mover mi bloque de coincidencia de php sobre mi bloque de ubicación raíz funcionó bien.

location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index  index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location / {
    root /Users/YOU/Projects/PROJECT;
}
Ben Walters
fuente
3
¿Esto funciona para un alias? Esto no responde a la pregunta original.
Geoffrey
1
Irrelevante. nginx siempre intenta primero los bloques de ubicación de expresiones regulares.
Z. Zlatev
@ Geoffrey sí, esto funciona para alias
icc97