REQUEST_URI в проксируемом запросе

Alex Belyansky alex.barut на gmail.com
Пн Июл 9 11:34:16 UTC 2012


Добрый день!

Хотелось бы поинтересоваться по поводу поведения Nginx, при запросе 
корневой директории.

Конфиг виртуального хоста примерно такой:
server {
     listen 127.0.0.1:80;
     server_name  test.ru ;
     root /home/test/www/test.ru;
     index index.php index.html;

     location ~* \.php {
         proxy_pass         http://upstream;
     }

     location / {
         try_files   $uri    $uri/   @upstream;
         error_page  404 = @upstream;
         error_page  403 = @upstream;
     }

     location @upstream {
        proxy_pass  http://upstream;
     }

}

Версия Nginx:

1-ый сервер
nginx: nginx version: nginx/1.0.0
nginx: built by gcc 4.2.1 20070719  [FreeBSD]
nginx: TLS SNI support enabled

2-ой сервер
nginx version: nginx/1.3.2
built by gcc 4.4.5 (Debian 4.4.5-8)
TLS SNI support enabled

Посылаем запрос к серверу:

GET / HTTP/1.1

Так вот суть вопроса в чем. Для первого сервера значение в PHP:
_SERVER["REQUEST_URI"] = /

А для второго:
_SERVER["REQUEST_URI"] = /index.php

Т.е. по сути получается что на первом сервере пересылается исходный 
запрос на backend, а на втором уже идет запрос к '/index.php'. На втором 
сервере пришлось убрать index.php из директивы index, чтобы на backend 
приходил исходный запрос.

Меня интересует нормально ли такое поведение или это какой-то глюк, или 
мои кривые руки?



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