Enviar encabezado adicional para FastCGI backend con nginx

Puedo usar nginx con varios fastcgi backend (php-cgi, mod-mono-fastcgi4). Ahora tengo que envió a otros encabezado http para el fastcgi backend, básicamente el mismo que proxy_set_header cuando está usando nginx como proxy inverso. Pero a mis conclusiones, no hay tal cosa como fastcgi_set_header en nginx.

Alguien tiene alguna idea de cómo hacer esto de todos modos? No quiero usar nginx módulos de la solución muste ser fácilmente implementable en una amplia gama de los sistemas del cliente.

OriginalEl autor Dynalon | 2012-02-27

4 respuestas

  1. 9

    Me echó un rápido vistazo al manual y creo que el más cercano se encuentra pasando fastcgi parámetros:

    Los encabezados de solicitud se transfiere a la FastCGI-servidor en forma de parámetros. En las aplicaciones y secuencias de comandos se ejecutan desde el FastCGI-servidor, estos parámetros son generalmente accesibles en la forma de variables de entorno. Por ejemplo, el encabezado de “agente de Usuario” se transfiere como parámetro HTTP_USER_AGENT. Además de las cabeceras de la petición HTTP, es posible traslado arbitrario de parámetros con la ayuda de la directiva fastcgi_param.

    http://wiki.nginx.org/HttpFcgiModule#Parameters.2C_transferred_to_FastCGI-server.

    fastcgi_param

    sintaxis: fastcgi_param valor del parámetro

    http://wiki.nginx.org/HttpFcgiModule#fastcgi_param

    He encontrado que, demasiado. Sin embargo, fastcgi_param se utilizan para definir una variable que se envía al servidor FastCGI – no de los Encabezados HTTP. El problema es que no se puede acceder a la fastcgi variables desde dentro de la aplicación (que es un script php o un asp.net webapp).
    Yo tengo trabajo ahora el uso de ‘fastcgi_param HTTP_X_MYVAR “mivalor”;’. Si el nombre de la variable comienza con HTTP_ parece que se pone de copiar los encabezados. Sin embargo, este es indocumentados y la aplicación específica y pueden cambiar con futuras versiones
    Buen hallazgo, Dyna. Voy a tomar nota de eso.
    Hola tanto, echa un vistazo $_SERVER en PHP para ver fastcgi_params. stackoverflow.com/questions/8098927/…

    OriginalEl autor Kamu

  2. 2

    Nginx tiene ahora:

    fastcgi_pass_header 'Cache-Control: no-cache, must-revalidate';
    

    Que puede ser utilizado en su lugar de reglas si la adición de encabezados que no está especificado en su solicitud. Por defecto fastcgi usos:

    fastcgi_pass_request_headers on;
    

    Que pase todos los Encabezados de la petición a fastcgi.

    No, no debería. @Derek Dowling : Su primera solución es incorrecta, fastcgi_pass_header hace lo contrario de lo que usted explica : permite pasar de encabezado(s) de la fastcgi respuesta del servidor al cliente, no de la solicitud inicial del servidor fastcgi. La intención de la presente directiva es mantener en la respuesta cabeceras especiales que pueden ser interpretadas por los proxy (como X-Accel-Buffering, X-Accel-Limit-Rate etc) en algunos casos específicos.
    No es corrent de acuerdo con doc : Permite pasar de lo contrario movilidad campos de encabezado de un FastCGI servidor a un cliente.

    OriginalEl autor Derek Dowling

  3. 0

    Usted puede hacer esto con la tercera parte del módulo ngx_headers_more. Después de la construcción de nginx con este módulo, usted puede hacer lo siguiente en su configuración:

    location /{
        more_set_input_headers 'Foo: bar baz';
        ...
    }
    

    OriginalEl autor mschuetz

  4. 0

    La Url a la nginx wiki artículos anteriores están rotos.

    nginx expone el encabezado de la solicitud valores a través de variables con el prefijo $http_, por lo que un encabezado de solicitud de HTTP_USER_AGENT está disponible a través de $http_user_agent.

    Asimismo un encabezado de solicitud nombre CHICKEN_SOUP estaría disponible a través de $http_chicken_soup.

    El ejemplo siguiente se muestra cómo pasar los Autorización encabezado de solicitud HTTP con PHP se ejecuta en php-fpm (PHP FastCGI process manager).

    location ~ \.php$ {
        fastcgi_pass   unix:/path/to/socket;
        fastcgi_index  index.php;
        fastcgi_param  HTTP_AUTHORIZATION $http_authorization;
        ... other settings
    }
    

    OriginalEl autor zoot

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *