ПРОЕКТЫ 


  АРХИВ 


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: Rewrite Referer in proxy_pass



On Mon, 13 Mar 2006, Grigory Batalov wrote:

Имеется проблема:

Один CGI-скрипт проверяет значение Referer, и, если оно частично
не совпадает с его собственным URL, перенаправляет клиента на
некий другой "URL по умолчанию".

CGI-скрипты обслуживаются сервером на другом порту (8081),
нежели nginx (8080), запросы туда пробрасывает proxy_pass:

       location /trac-cgi/ {
               proxy_pass      http://localhost:8081/trac-cgi/;
               proxy_redirect  default;
               proxy_set_header        X-Real-IP       $remote_addr;
               keepalive_timeout       0;
       }

При этом CGI-скрипт считает своим URL:

http://localhost:8081/trac-cgi/trac.cgi/logger/login

а в поле Referer получает вот это:

http://localhost:8080/trac-cgi/trac.cgi/logger/login

Нельзя ли переписать и Referer тоже каким-нибудь образом,
поскольку proxy_redirect в этом случае не помогает?

Или, может быть, есть другое простое решение?

Примерно так:

       location /trac-cgi/ {

           set  $referer  $http_referer;
           if ($http_referer ~ '^(http://localhost):8080(/.+)$') {
               set  $referer  $1:8081$2;
           }

           ...
           proxy_set_header  Referer  $referer;
           ...


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



 




Copyright © Lexa Software, 1996-2009.