Имеется проблема:
Один 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