<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Привет всем,<br><br></div>сейчас приходится делать так:<br><br></div>http {<br><br></div>upstream a {<br></div> server <a href="http://1.1.1.1:8080">1.1.1.1:8080</a>;<br></div> server <a href="http://2.2.2.2:8080">2.2.2.2:8080</a> backup;<br>}<br></div>server {<br></div> listen <a href="http://127.0.0.1:8081">127.0.0.1:8081</a>;<br></div> location {<br></div>  proxy_pass <a href="http://a">http://a</a>;<br> }<br>}<br><br>upstream b {<br> server <a href="http://3.3.3.3:8080">3.3.3.3:8080</a>;<br> server <a href="http://2.2.2.2:8080">2.2.2.2:8080</a> backup;<br>}<br>server {<br> listen <a href="http://127.0.0.1:8082">127.0.0.1:8082</a>;<br> location {<br>  proxy_pass <a href="http://b">http://b</a>;<br> }<br>}<br><br></div>upstream main {<br></div> server <a href="http://127.0.0.1:8081">127.0.0.1:8081</a>;<br></div> server <a href="http://127.0.0.2:8082">127.0.0.2:8082</a>;<br> hash $http_x_key consistent;<br>}<br></div>server {<br></div> listen *:80;<br></div> location {<br></div>  proxy_pass <a href="http://main">http://main</a>;<br> }<br>}<br><br></div>Есть ли какие-нибудь подходы/патчи, позволяющие nginx'у не проксировать через себя лишний раз?<br>Ну, кроме переменной в proxy_pass вместо "main" и embedded perl/lua/js для присвоения нужного значения.<br></div><div>Т.е. что-то вроде <br><br>upstream a {<br> server <a href="http://1.1.1.1:8080">1.1.1.1:8080</a>;<br> server <a href="http://2.2.2.2:8080">2.2.2.2:8080</a> backup;<br>}<br>upstream b {<br> server <a href="http://3.3.3.3:8080">3.3.3.3:8080</a>;<br> server <a href="http://2.2.2.2:8080">2.2.2.2:8080</a> backup;<br>}<br>upstream main {<br> upstream a;<br> upstream b;<br> hash $http_x_key consistent;<br>}<br>server {<br> listen *:80;<br> location {<br>  proxy_pass <a href="http://main">http://main</a>;<br> }<br>}<br><br></div><div>или<br><br>upstream main {<br> upstream a {<br>  server <a href="http://1.1.1.1:8080">1.1.1.1:8080</a>;<br>  server <a href="http://2.2.2.2:8080">2.2.2.2:8080</a> backup;<br> }<br> upstream b {<br>  server <a href="http://3.3.3.3:8080">3.3.3.3:8080</a>;<br>  server <a href="http://2.2.2.2:8080">2.2.2.2:8080</a> backup;<br> }<br> hash $http_x_key consistent;<br>}<br>server {<br> listen *:80;<br> location {<br>  proxy_pass <a href="http://main">http://main</a>;<br> }<br>}<br></div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><br>-- <br><div class="gmail_signature"><div dir="ltr"><div>Kind regards,<br>Vladimir.</div></div></div>
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>