<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hello!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve got beta and live site listening on different ip on the same server. Both sites using same ‘if’ in ‘server’ statement:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">server {<o:p></o:p></p>
<p class="MsoNormal">   listen 1.1.1.1:80;<o:p></o:p></p>
<p class="MsoNormal">  server_name live;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    set $mage_run_code default;<o:p></o:p></p>
<p class="MsoNormal">    if ($cookie_store_code = a1) {<o:p></o:p></p>
<p class="MsoNormal">                set $mage_run_code kiosk_a1;<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">    if ($cookie_store_code = b2) {<o:p></o:p></p>
<p class="MsoNormal">                set $mage_run_code kiosk1_b2;<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">    if ($cookie_store_code = c3) {<o:p></o:p></p>
<p class="MsoNormal">                set $mage_run_code kiosk2_c3;<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">server {<o:p></o:p></p>
<p class="MsoNormal">   listen 2.2.2.2:80;<o:p></o:p></p>
<p class="MsoNormal">  server_name live;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    set $mage_run_code default;<o:p></o:p></p>
<p class="MsoNormal">     if ($cookie_store_code = a1) {<o:p></o:p></p>
<p class="MsoNormal">                set $mage_run_code kiosk_a1;<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">    if ($cookie_store_code = b2) {<o:p></o:p></p>
<p class="MsoNormal">                    set $mage_run_code kiosk1_b2;<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">    if ($cookie_store_code = c3) {<o:p></o:p></p>
<p class="MsoNormal">                    set $mage_run_code kiosk2_c3;<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I want to replace if with map.  Changes seem obvious:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">map $cookie_store_code $mage_run_code_live {<o:p></o:p></p>
<p class="MsoNormal">                default default;<o:p></o:p></p>
<p class="MsoNormal">                a1 kiosk_a1;<o:p></o:p></p>
<p class="MsoNormal">                b2 kiosk1_b2;<o:p></o:p></p>
<p class="MsoNormal">                c3 kiosk2_c3;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">map $cookie_store_code $mage_run_code_beta {<o:p></o:p></p>
<p class="MsoNormal">                default default;<o:p></o:p></p>
<p class="MsoNormal">                a1 kiosk_a1;<o:p></o:p></p>
<p class="MsoNormal">                b2 kiosk1_b2;<o:p></o:p></p>
<p class="MsoNormal">                c3 kiosk2_c3;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">server {<o:p></o:p></p>
<p class="MsoNormal">   listen 1.1.1.1:80;<o:p></o:p></p>
<p class="MsoNormal">    server_name live;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    set $mage_run_code $mage_run_code_live;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">server {<o:p></o:p></p>
<p class="MsoNormal">   listen 2.2.2.2:80;<o:p></o:p></p>
<p class="MsoNormal">    server_name beta;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    set $mage_run_code $mage_run_code_beta;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The only thing disquiets me in this solution: ‘if’s are in ‘server’ statement and ‘map’ has a global context ‘http’. So, does setting cookie for beta site have any impacts on live site and vice versa? Or this solution provides independence
 of working live and beta regarding setting cookies?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Found in <a href="http://openresty.org/download/agentzh-nginx-tutorials-en.html">
http://openresty.org/download/agentzh-nginx-tutorials-en.html</a> <o:p></o:p></p>
<p class="MsoNormal">---------------------<o:p></o:p></p>
<p class="MsoNormal">even though the scope of Nginx variables is the entire configuration, each request does have its own version of all those variables' containers. Requests do not interfere with each other even if they are referencing a variable with the
 same name. This is very much like local variables in C/C++ function bodies. Each invocation of the C/C++ function does use its own version of those local variables (on the stack).<o:p></o:p></p>
<p class="MsoNormal">---------------------<o:p></o:p></p>
<p class="MsoNormal">Can someone approve it? It it’s true my config is correct.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">--<o:p></o:p></p>
<p class="MsoNormal">Sincerely yours,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:red">Aleksey Portnov | System Administrator | ISM eCompany</span> |
<span style="color:gray">T +38 098 92 32 432</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>