Setting headers within process_headers function of module

Atul Bhouraskar atul at
Thu Jun 6 23:42:27 UTC 2013

On 06/06/13 21:24, Maxim Dounin wrote:
> Hello!
> On Thu, Jun 06, 2013 at 05:17:14PM +1000, Atul Bhouraskar wrote:
>> Hi,
>> I am writing an "upstream" module to implement a custom protocol. I
>> have managed to get most of it working end to end by following the
>> fastcgi module code but am stuck at a problem that should be
>> simple...
>> I need to set certain HTTP headers within the process_header
>> function as the upstream server does not speak HTTP. The two headers
>> that I am most interested in at this time are "X-Accel-Redirect" and
>> "Content-Type" (populated at different times depending upon content
>> received from upstream). The values of both headers are available in
>> the function.
>> I have tried following the example at
>> (substituting headers_out
>> with headers_in) with no luck, the output headers don't seem to
>> change or there is a math exception thrown when a nginx internal
>> function is performing a hash lookup. Looking at the fastcgi module
>> it seems that there might be some hash initialisation that is
>> needed? I haven't been able to figure this out.
>  From your description it's not clear what exactly fails for you,
> but I would assume it's hide_headers_hash lookup, which should be
> initialized using the ngx_http_upstream_hide_headers_hash()
> function.

Thanks! That was it. I basically followed the fastcgi module again:

static ngx_str_t  ngx_http_fastcgi_hide_headers[] = {


if (ngx_http_upstream_hide_headers_hash(cf, &conf->upstream,
              &prev->upstream, ngx_http_fastcgi_hide_headers, &hash)
         != NGX_OK)
         return NGX_CONF_ERROR;

More information about the nginx-devel mailing list