Set Incoming Request Headers (similar to mod_headers)

I am trying to emulate an Apache mod_headers feature
(mod_headers - Apache HTTP Server Version 2.2).
I would like to set some headers before my content handler is run.
Specifically SSL related headers that I would like set before my
Passenger process picks up the request. I could do this with
proxy_set_header, but I am not proxying, the request is being picked
up and executed by Passenger.

Config looks like this:

location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Client-Verify $ssl_client_verify;
proxy_set_header X-Client-DN $ssl_client_i_dn;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_read_timeout 75;

passenger_enabled on;
}

This however will not work, the headers are not set when the backend
runs. Do I need to setup a second server block listening on a
different port and then proxy the request to that so I can take
advantage of proxy_set_header, or is there a way to do it like Apache.

On Wed, Nov 18, 2009 at 3:39 AM, W. Andrew Loe III
[email protected] wrote:

I am trying to emulate an Apache mod_headers feature
(mod_headers - Apache HTTP Server Version 2.2).

Oh, I’ve just hacked in the request header support to my
ngx_headers_more module:

http://github.com/agentzh/headers-more-nginx-module

I would like to set some headers before my content handler is run.
Specifically SSL related headers that I would like set before my
Passenger process picks up the request. I could do this with
proxy_set_header, but I am not proxying, the request is being picked
up and executed by Passenger.

The “proxy” module should not be used here because “proxy” is a
content handler per se (just a little special in that it’s also an
upstream module) and your have your own content handler (passenger
here) :slight_smile:

Can you try out the “more_set_input_headers” directive provided by the
“headers more” module?

Cheers,
-agentzh