passing header information on to backend Apache/PHP

Peter Langhans peter.langhans at incipience.co.uk
Sun Apr 5 18:25:05 MSD 2009


Larry,

thanks for your reply again. Sorry I stole your time for my own dumbness.

It's totally possible to do it via headers. The example I gave above, works
perfectly. I have just been too dump to test it in https (I tested in http)
and wondered why the header does not come through as expected :( Oh lord.

So just for reference. As the manual states correctly, you can pass any
header information on to your backend scripts via the

proxy_set_header           Header-Name    Header-Vale;

directive. Apache does NOT filter it out, and it's visible within PHP by
using one of the two following options:

1.) use the normal $_SESSION variable. CAVEAT: when using the $_SESSION
variable your header "Header-Name" becomes "HTTP_HEADER_NAME" (watch casing
and underscore instead of dash)

2.) use the apache_request_headers function to retrieve original/unchanged
values (http://uk.php.net/apache_request_headers)

Thanks for your time, folks!

Pete

On Sun, Apr 5, 2009 at 2:40 PM, Larry Bates <larry.bates at vitalesafe.com>wrote:

>  What about passing parameter to your PHP script using rewrite rule?
>
> rewrite  ^(.*)$  http://<url to backend server or IP:port>/<http://%3Curl+to+backend+server+or+IP:port%3E/>
> login.php?proto=SSL
>
> I might not be understanding your exact problem though.
>
> -Larry Bates
>
>  ------------------------------
> *From:* owner-nginx at sysoev.ru [mailto:owner-nginx at sysoev.ru] *On Behalf Of
> *Peter Langhans
> *Sent:* Sunday, April 05, 2009 8:03 AM
> *To:* nginx at sysoev.ru
> *Subject:* passing header information on to backend Apache/PHP
>
> Hi,
>
> I'm using nginx 0.6.35, apache 2.0.63 and php 5.2.9.
>
> My problem is, that I need my php scripts to know in some way or another
> whether SSL is used or not (to include either https or http javascript files
> e.g.).
>
> When using nginx as webfrontend proxy, it accepts all the ssl connections
> and it's working fine, but when I proxy through to apache, the knowledge
> about SSL is 'lost'. If possible, I don't want to be using different ports
> for proxying through to apache.
>
> I thought it'd be enough to set headers like:
>
> for 80:
> proxy_set_header           X-Secure     of;
>
> for 443:
> proxy_set_header           X-Secure     on;
>
> put I have not found a way how I could retrieve those values from within
> the php script. They seem to be filtered out by Apache.
>
> Does anyone have an idea how I can get any custom set header, set in the
> nginx.conf through to the php scripts?
>
> Thanks a lot,
> Peter
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20090405/5d3b12f2/attachment.html>


More information about the nginx mailing list