Cómo configurar Nginx PHP correctamente
Para muchas personas configurar PHP en Nginx no es más que buscar un tutorial para luego copiarlo y pegarlo. Parece que no tiene nada de malo, pero de hecho, mucha información en Internet está en mal estado y llena de lagunas. Si simplemente copia y pega sin buscar una comprensión más profunda, tarde o temprano pagará el precio.
Supongamos que usamos PHP para implementar un controlador front-end, o para decirlo sin rodeos, es una entrada unificada: enviamos todas las solicitudes PHP al mismo archivo y luego implementamos el enrutamiento analizando "REQUEST_URI" en este archivo.
En este momento, muchos tutoriales le enseñarán a configurar Nginx PHP de esta manera:
servidor {
escuche 80;
server_name foo.com;
raíz /ruta;
ubicación / {
índice index.html index.htm index.php;
if (!- e $request_filename) {
reescribir ./index.php último;
}
}
ubicación ~ . php$ {
incluye fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
índice fastcgi_index .php;
}
Aquí hay muchos errores, o al menos malos gustos. Echa un vistazo y encontrarás algunos.
Primero debemos comprender la relación de herencia de las instrucciones en el archivo de configuración de Nginx: el archivo de configuración de Nginx se divide en muchos bloques, los más comunes de afuera hacia adentro son ";
p>raíz /ruta;
index index.html index.htm index.php;
ubicación / {
try_files $uri $uri/ /index.php;
}
ubicación ~ .php$ {
try_files $uri =404;
incluye fastcgi.conf ;
fastcgi_pass 127.0.0.1: 9000;
}
}
De hecho, todavía hay Algunas fallas, principalmente "try_files" No es compatible con "fastcgi_split_path_info". Aunque se puede solucionar, la solución es fea, por lo que no entraré en detalles.
Suplemento: debido a que la "ubicación" ha sido limitada, "fastcgi_index" en realidad no es necesario.