<div dir="ltr">Добрый день,<div><br></div><div>Ситуация следующая: имеется боевой сервер в связке nginx + php-fpm + новая версия сайта на соседнем сервере, на котором тоже крутится nginx и php-fpm. Задача такова: на боевом сервере настроить проксирование на новую версию сайта в зависимости от установленной у посетителя куки.</div>
<div><br></div><div>Сложность в том, что в блок if нельзя завернуть proxy_set_header - на форумах советуют для этих целей использовать map с сопутствующей ссылкой на <a href="http://nginx.org/ru/docs/http/ngx_http_map_module.html">http://nginx.org/ru/docs/http/ngx_http_map_module.html</a>. Никак не могу понять, как обойтись без if, а только map в моем случае?</div>
<div><br></div><div>Другими словами, конструкция ниже работает только для внутренней сети (в логах браузера идет подгрузка с ip 192.168.2.146).</div><div><br></div><div>server {</div><div><div>...</div><div>       if ($http_cookie ~ 'newsitetest') {</div>
<div>                set $newsite 1;</div><div>       }</div></div><div>...</div><div><div>        location ~* ^/(.+)$ {</div><div><br></div><div>                        if ($newsite = 1) {</div><div>                                       proxy_pass <a href="http://192.168.2.146">http://192.168.2.146</a>;<br>
</div><div>                                       break;</div><div>                        }</div><div>                try_files $uri $uri/ /not_found.php?query_uri=/$1&$args;<br></div><div>                fastcgi_pass   <a href="http://127.0.0.1:9000">127.0.0.1:9000</a>;<br>
</div><div>                fastcgi_index  index.html;</div><div>                include        fastcgi_params;</div><div>                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;</div></div><div>}<br>
</div><div>}</div><div><div><br></div>-- <br><div><br></div><div><div>С уважением</div></div>
</div></div>