Choqué contra un muro mientras configuraba un sitio usando nginx / fpm. La página muestra "Archivo no encontrado", y esto aparece en nginx error.log:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Soy nuevo en nginx y fpm, y ese mensaje de error no significa nada para mí (¡incluso la máquina de google no me ha ayudado!). ¿Alguien puede arrojar alguna luz sobre lo que podría estar pasando?
SCRIPT_FILENAME
.Respuestas:
Debería tener una
location
sección para manejar solicitudes PHP configuradas de manera similar a esta:(El extra
try_files
resuelve una vulnerabilidad de seguridad que podría permitir la ejecución de archivos arbitrarios como PHP).Además,
root
debe definirse en laserver
sección del archivo de configuración, no en lalocation
sección. Esta es una de las configuraciones erróneas de nginx más comunes .fuente
Esta es una nota para instalaciones de pasajeros.
Acabo de instalar nginx desde la fuente a través del pasajero, lo que causó un problema con php5-fpm. El nginx.conf predeterminado hace uso del problema descrito por Michael Hampton. La solución es eliminar el blok alrededor de las directivas raíz e de índice, de modo que:
se convierte en:
Además, el bloque php está configurado incorrectamente. Vea la respuesta de Michael Hamptons para conocer la forma correcta de hacerlo.
Una nota adicional podría ser que si php5-fpm está configurado para usar sockets, apunte el parámetro fastcgi_pass en el bloque php en nginx.conf a la configuración del socket en /etc/php5/fpm/pool.d/www.conf.
fuente
Acabo de tener este problema en una nueva versión de nginx. (configuración tomada de una versión anterior)
Lo que tuve que hacer fue colocar lo
include fastcgi_params;
anterior mi costumbre deSCRIPT_FILENAME
esta manera:Como
SCRIPT_FILENAME
se estaba sobrescribiendo el.fuente
Si está utilizando alias en sus bloques de ubicación, un error 404 no controlado también puede exhibir este comportamiento. Puede ver esto si la página que se muestra en el navegador es el texto simple "Archivo no encontrado" en lugar de la página nginx 404 formateada (centrada) más bonita. Esencialmente, realmente está diciendo que no se puede encontrar la página 404.
Para resolverlo, agregue una
try_files $uri =404
línea adicional en su bloque de ubicación y vuelva a cargar la configuración de nginx. Además de lo que dijo Michael Hampton sobre la resolución de una vulnerabilidad de seguridad específica , esto también permite que el controlador fastcgi anule la definición de alias y encuentre el script 404 en la ubicación predeterminada.fuente
sobre la línea 149, cambiar usuario php && grupo de usuarios
Lo pruebo con éxito ahora.
fuente
He visto :
en un servidor que puse bajo alta carga cuando se realiza una prueba de esfuerzo Mi sospecha, aún por confirmar, es que los identificadores de archivos disponibles del sistema operativo estaban agotados. En cuyo caso php-fpm no puede obtener una referencia al archivo.
Me doy cuenta de que esto es especulativo, pero ciertamente se ajusta a mi escenario y también podría ayudar a alguien más.
fuente
fuente