map, if и proxy set header

mikebell nginx-forum at nginx.us
Mon Oct 26 18:15:41 MSK 2009


Добрый день коллеги!

Имеется задача, отправлять некоторые запросы к /test.cgi отобранные по аргументу id в $args на другой бекэнд , не переписывая исходный url.

Имеется следующая конструкция:

map $arg_id $new {
        default 0;
        00301 1;
        02340 1;
        ...
}

location /test.cgi {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $remote_addr;

        if ($new) {
            proxy_pass https://192.168.1.2?$args;
            #proxy_set_header Host "new.host.name";
        }
        proxy_pass http://192.168.1.1;
}

Все вроде хорошо, все перенаправляется. Но не загружаются ни css ни картинки ни скрипты. Естественно, это по тому, что картинки оно ищет на другом сервере где таковых нет (url то мы не переписали). При попытке переписать proxy_set_header Host "new.host.name"; в  контексте if {} выдает ошибку : "proxy_set_header" directive is not allowed here...

Может кто сталкивался с подобным? Никак не могу найти правильное решение.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,16926,16926#msg-16926






More information about the nginx-ru mailing list