proxy if cookie + map
Илья Шипицин
chipitsine at gmail.com
Thu Aug 28 12:39:26 UTC 2014
мы так делаем
map $http_cookie $u {
default old;
~new-int-rel new;
}
upstream old {
least_conn;
server xxx1;
server xxx2;
server xxx3;
keepalive 10;
}
upstream new {
least_conn;
server xxx1:8585;
server xxx2:8585;
server xxx3:8585;
keepalive 10;
}
......
proxy_pass http://$u;
у вас, видимо, будет, fastcgi вместо http
28 августа 2014 г., 17:41 пользователь Синицкий Павел Евгеньевич
<sejo412 at gmail.com> написал:
> Добрый день,
>
> Ситуация следующая: имеется боевой сервер в связке 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;
> }
> }
>
> --
>
> С уважением
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
Подробная информация о списке рассылки nginx-ru