proxy if cookie + map

Синицкий Павел Евгеньевич sejo412 at gmail.com
Thu Aug 28 11:41:58 UTC 2014


Добрый день,

Ситуация следующая: имеется боевой сервер в связке nginx + php-fpm + новая
версия сайта на соседнем сервере, на котором тоже крутится nginx и php-fpm.
Задача такова: на боевом сервере настроить проксирование на новую версию
сайта в зависимости от установленной у посетителя куки.

Сложность в том, что в блок if нельзя завернуть proxy_set_header - на
форумах советуют для этих целей использовать map с сопутствующей ссылкой на
http://nginx.org/ru/docs/http/ngx_http_map_module.html. Никак не могу
понять, как обойтись без if, а только map в моем случае?

Другими словами, конструкция ниже работает только для внутренней сети (в
логах браузера идет подгрузка с ip 192.168.2.146).

server {
...
       if ($http_cookie ~ 'newsitetest') {
                set $newsite 1;
       }
...
        location ~* ^/(.+)$ {

                        if ($newsite = 1) {
                                       proxy_pass http://192.168.2.146;
                                       break;
                        }
                try_files $uri $uri/ /not_found.php?query_uri=/$1&$args;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.html;
                include        fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
}

-- 

С уважением
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20140828/524da574/attachment-0001.html>


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