Непонятная ошибка в header.

Igor Sysoev is at rambler-co.ru
Tue Sep 9 16:40:34 MSD 2008


On Tue, Sep 09, 2008 at 12:34:20PM +0300, maxhl at hitline.net.ua wrote:

> Эти опции задаются в контексте location.
> ______________________________________________________________________________
>                 location ~ .php$ {
>                         fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
>                         include  /usr/local/nginx/conf/phpcgi.conf;
>                         fastcgi_param SCRIPT_FILENAME /home/htdocs$fastcgi_script_name;
>                 }
> ______________________________________________________________________________
> #phpcgi.conf
> fastcgi_pass_request_body off;
> client_body_in_file_only clean;
> fastcgi_param  REQUEST_BODY_FILE  $request_body_file;
> fastcgi_connect_timeout 30;
> fastcgi_send_timeout 600;
> fastcgi_read_timeout 600;
> fastcgi_buffer_size 32k;
> fastcgi_buffers 4 32k;
> fastcgi_busy_buffers_size 32k;
> fastcgi_temp_file_write_size 32k;
> fastcgi_intercept_errors on;
> fastcgi_temp_path /mnt/md0;
> fastcgi_param  QUERY_STRING    $query_string;
> fastcgi_param  CONTENT_TYPE    $content_type;
> fastcgi_param  CONTENT_LENGTH  $content_length;
> fastcgi_param  REQUEST_URI     $request_uri;
> fastcgi_param  REQUEST_METHOD  $request_method;
> fastcgi_param GATEWAY_INTERFACE CGI/1.1;
> fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
> fastcgi_param  REMOTE_ADDR        $remote_addr;
> fastcgi_param  REMOTE_PORT        $remote_port;
> fastcgi_param  SERVER_ADDR        $server_addr;
> fastcgi_param  SERVER_PORT        $server_port;
> fastcgi_param  SERVER_NAME        $server_name;
> fastcgi_param  SCRIPT_NAME        $request_uri;
> fastcgi_param   DOCUMENT_ROOT   $document_root;
> client_body_temp_path /mnt/md0;
> fastcgi_param   REDIRECT_STATUS 200;
> fastcgi_index  index.php;

Что предполагается достигнуть вот этим набором:

> proxy_set_header  X_SRC_CLIENT_IP       $http_x_src_client_ip;
> proxy_set_header  X-Real-IP             $http_x_src_client_ip;
> set_real_ip_from   192.168.1.4;
> real_ip_header     X-Real-IP;

?

proxy_set_header никакого отношения к fastcgi не имеет.
fastcgi модуль должен сам автоматически передавать клиентский
X_SRC_CLIENT_IP в виде HTTP_X_SRC_CLIENT_IP. Где его нужно выуживать
на стороне PHP, я не знаю.

> Скрипт вида 
> ______________________________________________________________________________
> <?
> //phpinfo();
> echo '$HTTP_HOST='.$HTTP_HOST.'<br>';
> echo '$_SERVER["REMOTE_ADDR"]='.$_SERVER['REMOTE_ADDR'].'<br>';
> echo '$_SERVER["HTTP_X_SRC_CLIENT_IP"]='.$_SERVER['HTTP_X_SRC_CLIENT_IP'].'<br><br>';
> echo '$_SERVER["X-Real-IP"]='.$_SERVER['X-Real-IP'].'<br><br>';
> ?>
> ______________________________________________________________________________
> Выдает нужный ип только при первом запуске ... при последующих пустая строка ...
> При этом в логе все равно пищется 
> 192.168.1.4 - - [09/Sep/2008:13:16:15 +0400] "GET /ii.php HTTP/1.1" 200 632 "-" "Opera/9.52 (Windows NT 5.2; U; ru)"
> ______________________________________________________________________________
> patch -d nginx -p1 < /usr/work/src2/src/hash_nginx_patch.diff
> patch -d nginx -p1 < /usr/work/src2/src/request_per_seconds.dpatch
> 
> ______________________________________________________________________________
> #!/bin/sh
> cd /usr/work/src2/nginx
> make -s clean
> 
> CC="gcc" \
> OPTIM="-O3 -pipe  -fno-exceptions -funroll-loops -ffast-math  -funroll-loops -march=athlon64 -msse3" \
> CFLAGS="-O2 -pipe" \
> INCLUDES="-I/usr/local/include" \
> ./configure  \
> --prefix=/usr/local/nginx \
> --with-http_stub_status_module \
> --without-http_empty_gif_module \
> --without-select_module \
> --without-poll_module \
> --without-http_userid_module \
> --without-http_map_module \
> --with-pcre=../pcre \
> --with-http_realip_module        !!! мод есть 100%
> 
> make -s  && make install
> ______________________________________________________________________________
> root at srv/usr/work/src2> uname -a
> FreeBSD srv.org 7.0-STABLE FreeBSD 7.0-STABLE #1: Wed Apr 23 15:45:06 MSD 2008     root at srv.org:/usr/obj/usr/src/sys/AMD64_7  amd64
> ______________________________________________________________________________
> 
> ----- Original Message ----- 
> From: "Igor Sysoev" <is at rambler-co.ru>
> To: <nginx-ru at sysoev.ru>
> Sent: Tuesday, September 09, 2008 9:24 AM
> Subject: Re: Непонятная ошибка в header.
> 
> 
> On Tue, Sep 09, 2008 at 08:37:45AM +0300, maxhl at hitline.net.ua wrote:
> 
> > Открывается страничка он есть ... если обновить страничку он пропадает.
> > И потом сколько не обновляй его нет но если перегрузить nginx опять в 
> > первый раз появится ...
> 
> В моих тестах я записывал $http_x_src_client_ip в access_log, он 
> появлялся в каждом запросе
> 
> > ----- Original Message ----- 
> > From: "Igor Sysoev" <is at rambler-co.ru>
> > To: <nginx-ru at sysoev.ru>
> > Sent: Monday, September 08, 2008 10:46 PM
> > Subject: Re: Непонятная ошибка в header.
> > 
> > 
> > On Mon, Sep 08, 2008 at 09:30:50PM +0300, maxhl at hitline.net.ua wrote:
> > 
> > >Вечер добрый.
> > >В скрипте нужно было только  это
> > >proxy_set_header  X_SRC_CLIENT_IP  $http_x_src_client_ip;
> > >
> > >proxy_set_header  X-Real-IP  $http_x_src_client_ip;  работает тоже только
> > >первый раз ...
> > 
> > Что значит - только первый раз ?
> > 
> > >>Но нужно понимать, что в X_SRC_CLIENT_IP могут влить чего угодна
> > >>и такая конструкция
> > >>proxy_set_header  X-Real-IP  $http_x_src_client_ip;
> > >>не гарантирует реальноого адреса.
> > >Таких клиентов будут единицы ...
> > 
> > 
> > -- 
> > Игорь Сысоев
> > http://sysoev.ru
> > 

-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list