nginx & core dump 3

Maxim Dounin mdounin at mdounin.ru
Tue Oct 30 07:44:47 UTC 2012


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.  Он, 
однако, продолжает эту функциональность предлагать пользователям, 
наступая то на одни, то на другие грабли.

> Может быть как-то можно без 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

-- 
Maxim Dounin
http://nginx.com/support.html



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