nginx & core dump 3

Sergey Kobzar sergey.kobzar at itcraft.org
Tue Oct 30 08:40:00 UTC 2012


Максим

On 10/30/12 09:44, Maxim Dounin wrote:
> Hello!
>
> On Tue, Oct 30, 2012 at 03:17:24AM -0400, ak84 wrote:
>
>> Максим, добрый день.
>> Сторонние модули пробовал отключать в версии 0.8.54 , ситуация повторялась,
>> сейчас отключить header_more не могу.
>
> Just a side note: судя по трейсу, который вы приводили - виноват в
> падениях именно headers more модуль.  Ибо протит список входящих
> заголовков.
>
> Его автору я неоднократно объяснял, что изменять список входящих
> заголовков запроса - это идеологически неправильно, и вместо этого
> надо пользоваться инструментами, которые позволяют с этим списком
> при необходимости выборочно работать, e.g. proxy_set_header.  Он,
> однако, продолжает эту функциональность предлагать пользователям,
> наступая то на одни, то на другие грабли.

Как правильно поступить, если нужно убрать один из хидеров, отдаваемых 
клиенту, например тот же X-Powered-By?

>
>> Может быть как-то можно без header_more реализовать следующую схему ( для
>> ip, не из доверенного списка очищать определённые хедеры):
>>
>> имеем в конфиге:
>>
>> geo trustip {
>> default 0;
>> 192.168.1.0/24 1;
>> 192.168.2.0/24 1;
>> etc.
>> }
>> upstream backend {
>>      server 192.168.0.10:80;
>>      server 192.168.0.11:80;
>> }
>>
>>
>>      server {
>>          listen  ip:80;
>>          server_name hostname.ru;
>>
>> if ( $trustip = "1" )
>> {
>>          access_log /var/log/nginx/access_from_trust.log main;
>> }
>>
>> if ( $trustip != "1")
>> {
>>          access_log /var/log/nginx/access_from_not_trust.log main;
>>          more_clear_input_headers 'x-nokia-test:';
>> }
>
> Правильно делать так:
>
>      map $trustedip $nokia {
>          default    "";
>          1          $http_x_nokia_test;
>      }
>
>      proxy_set_header X-Nokia-Test "$nokia";
>
> При этом map{} нужно задать на уровне http{}, а proxy_set_header -
> вместе с другими заголовками proxy_set_header.
>
>>              proxy_set_header  X-Real-IP  $remote_addr;
>>              proxy_set_header  Host        $host;
>>              proxy_intercept_errors on;
>>              include mpro_special.conf;
>>              include short_urls.conf;
>>              proxy_pass        http://backend;
>>              proxy_next_upstream error timeout invalid_header http_500
>> http_502;
>>          }
>>
>> }
>
> На всякий случай, документацию берут тут:
>
> http://nginx.org/r/map
> http://nginx.org/r/proxy_set_header
>



Подробная информация о списке рассылки nginx-ru