header handling

Frank Liu gfrankliu at gmail.com
Sat Aug 15 07:15:47 UTC 2015


I made the below patch and can now use $upstream_http_x_header for
logformat to capture the header X.header in the access log. Does anybody
see any issues with the patch?

--- src/http/ngx_http_variables.c.orig 2015-08-15 02:19:31.635328112 +0000

+++ src/http/ngx_http_variables.c 2015-08-15 02:19:42.051541422 +0000

@@ -897,6 +897,8 @@



             } else if (ch == '-') {

                 ch = '_';

+            } else if (ch == '.') {

+                ch = '_';

             }



             if (var->data[n + prefix] != ch) {

Thanks!
Frank


On Fri, Aug 14, 2015 at 1:04 PM, Frank Liu <gfrankliu at gmail.com> wrote:

> Thanks ryd994 for the suggestion!  1 and 2 are working now.
> Anyone else has any ideas on 3?
>
> Frank
>
> On Fri, Aug 14, 2015 at 10:36 AM, ryd994 <ryd994 at 163.com> wrote:
>
>> Hi,
>>
>> 1) Use mapped variable
>>
>> map $http_<header you want to change> $<some variable name> {
>>   ""           "value if nit set";
>>   default $http_<header you want to change>;
>> }
>> Then you can set header with the new variable.
>>
>> 2) I guess you can use map, too. Use $upstream_http_*name* instead.
>>
>> 3) Sorry, I have no idea on this.
>>
>> On Sat, Aug 15, 2015, 00:51 Frank Liu <gfrankliu at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I have a few questions regarding headers in nginx:
>>>
>>> 1) I use proxy_set_header to pass a header to upstream servers. Is it
>>> possible to honor the header if the incoming request already has it?
>>>
>>> 2) I want to pass the "Server" header from upstream response to clients,
>>> and if there is no such response header, I'd like to add a customer one. Is
>>> it possible via core nginx or any third party modules? Currently I am using
>>> "proxy_pass_header Server" without any check. I am not sure what happens if
>>> upstream response doesn't have it.
>>>
>>> 3) I am trying to log an upstream response header to access log but it
>>> has a "dot" in it (say X.header). I don't have any control to the upstream
>>> servers. On nginx side, I tried setting "ignore_invalid_headers off" in the
>>> server block, and in the logformat, I tried a few things for the the
>>> column: $upstream_http_x.header   $upstream_http_x_header
>>> $upstream_http_x-header, but nothing works. Any ideas how I can log it?
>>>
>>> Thanks!
>>> Frank
>>> _______________________________________________
>>> nginx mailing list
>>> nginx at nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx
>>
>>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20150815/3c761625/attachment.html>


More information about the nginx mailing list