Configurar PHP en nginx con diferentes [privilegios] usuarios

nginx php-fpm

Utilizar PHP como módulo FPM en Nginx es bastante sencillo, de hecho las instalaciones de las últimas versiones de Ubuntu cuando se instala nginx, incluyen el módulo FPM al instalar PHP, sólo hay que configurar alguna cosa para que funcione así y listo, aquí escribí algo al respecto: Instalar PHP FPM y Nginx en Ubuntu 16.04 LTS

Hace unos días se me presentó un caso en el que debería utilizar lectura de ciertos archivos de los cuales el usuario por default de mi instalación de nginx no tiene permisos de lectura, así que la forma más rápida que tuve fue crear un nuevo pool de PHP-FPM y entonces agregar una configuración en el servidor web.

Para crear la nueva configuración, solamente basta con duplicar el archivo /etc/php5/fpm/pool.d/ (depende de la versión puede estar en /etc/php o /etc/php7) y aparte de hacer ajustes que se crean convenientes, cambiar lo relativo a user y group además del listen (puerto o socket). Con esto ya podemos utilizar este pool para otro servidor virtual o como el caso que me ocupa, que ciertos archivos de un directorio en particular se ejecuten con otros privilegios de usuario para tener acceso a lo que requiero.

Una vez que está, reiniciamos el servicio php-fpm y en nuestra configuración de nginx hacemos los cambios necesarios, pondré un ejemplo de un extracto de mi configuración por defecto /etc/nginx/sites-enabled/default

   location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      if ($uri !~ "^/directorio/") {
         fastcgi_pass unix:/tmp/php5-fpm.sock;
      }
      if ($uri ~ "^/directorio/") {
         fastcgi_pass 127.0.0.1:9001;
      }
      fastcgi_index index.php;
      include fastcgi_params;
   }

Listo, cuando haga peticiones a mi servidor web en el directorio /directorio/ y cualquier cosa dentro, me conectará con el pool que existe en mi puerto 9001 del servidor local, todo lo demás lo mandará a mi socket /tmp/php5-fpm.sock

Así, en un mismo servidor estoy enviando las peticiones a diferente configuración de PHP con diferentes privilegios de usuario.

+ fotos

Almacenado en nginx, PHP

por Jorge Martínez Mauricio :)


¿Algo que comentar?


Suscríbete por correo electrónico, recibirás los nuevos escritos antes que nadie y es gratis 😊

¿Ya conoces los foros de tar?

Relacionadas

    Fotografías de

    tar.mx es un blog sobre fotografía, tecnología y otras chunches