proxy_fcgi_module apache http apc mod-proxy php

proxy_fcgi_module - php-fpm apache



Apache 2.4+PHP-FPM y encabezados de autorizaciĆ³n (3)

Resumen: mod_proxy de Apache 2.4 no parece estar pasando los encabezados de autorización a PHP-FPM. ¿Hay alguna forma de arreglar esto?

Versión larga: estoy ejecutando un servidor con Apache 2.4 y PHP-FPM. Estoy usando APC tanto para el almacenamiento en caché del código de operación como para el almacenamiento en caché del usuario. Según lo recomendado por Internet, estoy usando el mod_proxy_fcgi de Apache 2.4 para proxy las solicitudes a FPM, así:

ProxyPassMatch ^/(.*/.php)$ fcgi://127.0.0.1:9000/foo/bar/$1

La configuración funciona bien, excepto una cosa: el apc.php incluido de APC, que se usa para monitorear el estado de APC, no me permite iniciar sesión (se requiere para ver las entradas de caché de usuario). Cuando hago clic en "Entradas de caché de usuario" para ver el caché del usuario, me pide que inicie sesión, al hacer clic en el botón de inicio de sesión se muestra el formulario de inicio de sesión de HTTP habitual, pero ingresar el nombre de usuario y contraseña correctos no da resultado. Esta función funciona perfectamente cuando se ejecuta con mod_php en lugar de mod_proxy + php-fpm.

Después de buscar en Google, descubrí que otras personas tenían el mismo problema y descubrí que era porque Apache no pasaba los encabezados HTTP de Autorización al proceso externo FastCgi. Lamentablemente, solo encontré una solución para mod_fastcgi, que se veía así:

FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

¿Hay una configuración equivalente o alguna solución alternativa que también funcione con mod_proxy_fcgi?


Esto me tomó mucho tiempo para descifrar, ya que no está documentado en mod_proxy o mod_proxy_fcgi.

Agregue la siguiente directiva a su apache conf o .htaccess:

CGIPassAuth on

Mira here para más detalles.


No encontré ninguna configuración similar con mod_proxy_fcgi PERO simplemente funciona para mí de forma predeterminada. Solicita la autorización del usuario (.htaccess como de costumbre) y php la obtiene, y funciona como mod_php o fastcgi y pass-header. No sé si fui útil ...

EDITAR: solo funciona en teszt.com/ cuando utilizo DirectoryIndex ... Si paso el nombre del archivo php (incluso si index.php!) Simplemente no funciona, no pase la autenticación a php. Esto es un bloqueador para mí, pero no quiero cambiar a apache 2.2 (y mod_fastgi) para migrar a nginx (también en esta máquina).


Varios módulos de Apache quitarán el encabezado de Authorization , generalmente por "razones de seguridad". Todos ellos tienen diferentes configuraciones oscuras que puedes modificar para anular este comportamiento, pero tendrás que determinar exactamente qué módulo es el culpable.

Puede solucionar este problema pasando el encabezado directamente a PHP a través del env:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Consulte también Zend Server Windows - El encabezado de autorización no se pasa al script PHP