Configuración Nginx · 3 min read · Feb 14, 2026

Instalando Nginx Con Soporte PHP5 (Y PHP-FPM) Y MySQL En CentOS 6.3 - Página 2

6 Configurando nginx

La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:

vi /etc/nginx/nginx.conf

La configuración es fácil de entender (puedes aprender más sobre ella aquí: http://wiki.codemongers.com/NginxFullExample y aquí: http://wiki.codemongers.com/NginxFullExample2)

Primero (esto es opcional) puedes aumentar el número de procesos de trabajo y establecer el keepalive_timeout a un valor razonable:

| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |

Los hosts virtuales se definen en contenedores server {} en el directorio /etc/nginx/conf.d. Vamos a modificar el vhost por defecto (en /etc/nginx/conf.d/default.conf) de la siguiente manera:

vi /etc/nginx/conf.d/default.conf

| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirigir las páginas de error del servidor a la página estática /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy de los scripts PHP a Apache escuchando en 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pasar los scripts PHP al servidor FastCGI escuchando en 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # negar acceso a archivos .htaccess, si la raíz del documento de Apache # concuerda con la de nginx # location ~ /\.ht { deny all; } } |

servername ; hace de este un vhost por defecto que captura todo (por supuesto, también puedes especificar un nombre de host aquí como www.example.com).

En la parte de location /, he añadido index.php a la línea de índice. root /usr/share/nginx/html; significa que la raíz del documento es el directorio /usr/share/nginx/html.

La parte importante para PHP es el bloque location ~ .php$ {}. Descoméntalo para habilitarlo. Cambia la línea root a la raíz del documento del sitio web (por ejemplo, root /usr/share/nginx/html;). Ten en cuenta que he añadido la línea try_files $uri =404; para prevenir exploits de día cero (ver http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP y http://forum.nginx.org/read.php?2,88845,page=3). Asegúrate de cambiar la línea fastcgi_param a fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; porque de lo contrario el intérprete de PHP no encontrará el script PHP que llamas en tu navegador ( $document_root se traduce a /usr/share/nginx/html porque eso es lo que hemos establecido como nuestra raíz del documento).

PHP-FPM está escuchando en el puerto 9000 en 127.0.0.1 por defecto, por lo tanto, le decimos a nginx que se conecte a 127.0.0.1:9000 con la línea fastcgi_pass 127.0.0.1:9000;. También es posible hacer que PHP-FPM use un socket Unix - describiré esto en el capítulo 7.

Ahora guarda el archivo y recarga nginx:

/etc/init.d/nginx reload

Ahora crea el siguiente archivo PHP en la raíz del documento /usr/share/nginx/html…

vi /usr/share/nginx/html/info.php

| |

Ahora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.0.100/info.php):

Como ves, PHP5 está funcionando, y está funcionando a través de FPM/FastCGI, como se muestra en la línea de API del servidor. Si desplazas hacia abajo, verás todos los módulos que ya están habilitados en PHP5, incluyendo el módulo MySQL:

7 Haciendo que PHP-FPM Use Un Socket Unix

Por defecto, PHP-FPM está escuchando en el puerto 9000 en 127.0.0.1. También es posible hacer que PHP-FPM use un socket Unix que evita la sobrecarga de TCP. Para hacer esto, abre /etc/php-fpm.d/www.conf…

vi /etc/php-fpm.d/www.conf

… y haz que la línea listen se vea de la siguiente manera:

| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |

Luego recarga PHP-FPM:

/etc/init.d/php-fpm reload

A continuación, revisa tu configuración de nginx y todos tus vhosts y cambia la línea fastcgi_pass 127.0.0.1:9000; a fastcgi_pass unix:/tmp/php5-fpm.sock;, por ejemplo, así:

vi /etc/nginx/conf.d/default.conf

| [...] location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...] |

Finalmente recarga nginx:

/etc/init.d/nginx reload

8 Enlaces

Acerca del Autor

Falko Timme es el propietario de Timme Hosting (alojamiento web nginx ultra-rápido). Es el mantenedor principal de HowtoForge (desde 2005) y uno de los desarrolladores principales de ISPConfig (desde 2000). También ha contribuido al libro de O’Reilly “Administración del Sistema Linux”.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.