ПРОЕКТЫ 


  АРХИВ 


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: REQUEST_URI: баг или ф ича?



On Wed, Aug 15, 2007 at 10:37:29AM +0300, Andrey Kravchenko wrote:

> Вы писали Wednesday, August 15, 2007, 8:43:32 AM:
> 
> > On Tue, Aug 14, 2007 at 07:00:07PM +0300, Andrey Kravchenko wrote:
> 
> >> В конфиге есть строчка:
> >> fastcgi_param REQUEST_URI $uri;
> >> 
> >> Есть скрипт на PHP:
> >> echo($_SERVER['REQUEST_URI']);
> >> 
> >> Если обращаюсь к http://domen/ , скрипт возвращает пустую строку, хотя
> >> ожидается "/".
> >> Если обращаюсь к http://domen/index.php , возвращается "/index.php",
> >> как и должно быть.
> >> 
> >> Баг или фича?
> 
> > Как выглядит конфигурация в районе fastcпi ?
> > Есть ли какие-нибудь rewrite'ы ?
> 
> Вроде ничего особенного нет в конфиге. Все просто.
> 
> 
>         server {
>                 listen       80;
>                 server_name  domen;
>         
>                 location / {
>                         root   /home/domen/www;
>                         index  index.php index.htm index.html;
> #                       rewrite ^/support/(.*)$ http://support.domen/$1 
> permanent;
>                 }

Вот это

>                 if ($host ~* ^(www\.)*ddd\.ru$) {
>                         rewrite ^/(.*)$ http://domen/$1 permanent;
>                 }                               

лучше вынести с отдельный сервер:

   server {
        server_name    ddd.ru  www.ddd.ru;
        rewrite ^/(.*)$ http://domen/$1 permanent;
   }

>                 location ~ \.php$ {
>                         rewrite ^/subdir/(.*)$ http://support.domen/$1 
> permanent;
>                         fastcgi_pass 127.0.0.1:9000;
>                         fastcgi_index index.php;
>                         fastcgi_param SCRIPT_FILENAME /home/domen/www$uri; 
>                         #        /home/flybb/www$uri;
>                         #        fastcgi_script_name;
>                         fastcgi_param QUERY_STRING $query_string;
>                         fastcgi_param REQUEST_METHOD $request_method;
>                         fastcgi_param CONTENT_TYPE $content_type;
>                         fastcgi_param CONTENT_LENGTH $content_length;
>                         fastcgi_param DOCUMENT_ROOT $document_root;
>                         fastcgi_param GATEWAY_INTERFACE CGI/1.1;
>                         fastcgi_param PATH_TRANSLATED $document_root$uri;
>                         fastcgi_param REDIRECT_STATUS 200;
>                         fastcgi_param REMOTE_ADDR       $remote_addr;
>                         fastcgi_param REMOTE_PORT $remote_port;
>                         fastcgi_param REMOTE_USER $remote_user;
>                         fastcgi_param REQUEST_URI $uri;
>                         fastcgi_param SCRIPT_NAME $fastcgi_script_name;
>                         fastcgi_param SERVER_ADDR $server_addr;
>                         fastcgi_param SERVER_NAME $server_name;
>                         fastcgi_param SERVER_PORT $server_port;
>                         fastcgi_param SERVER_PROTOCOL $server_protocol;
>                         fastcgi_read_timeout 5m;
>                 }               
>                 
>         }

Для /support/ и /subdir/ лучше сделать отдельные location.

Что касается REQUEST_URI для "/", то судя по конфигурации, он должен
быть равен /index.php, потому что сначала запрос попадает в "location /",
где для него находится index.php, после чего делается внутрений редирект
и запрос переходит к "location ~ \.php$", а $uri на этот момент равно
/index.php.


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



 




Copyright © Lexa Software, 1996-2009.