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