ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx & core dump 3



Максим

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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.