Rewrite Referer in proxy_pass
Igor Sysoev
is at rambler-co.ru
Mon Mar 13 21:48:28 MSK 2006
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
More information about the nginx-ru
mailing list