<HTML><BODY>Спасибо за ответ!<br>Хороший доклад, многое проясняет.<br><br>Если можно, спрошу про ещё одну конфигурацию:<br>location @proxy1 {<br> ...много строк настройки первого прокси...<br>}<br>location /png {<br> error_page 418 =@proxy1; return 418;<br>}<br>location /pic {<br> error_page 418 =@proxy1; return 418;<br>}<br><br>location @proxy2 {<br> ...много других строк настройки второго прокси...<br>}<br>location /some_location {<br> error_page 418 =@proxy2; return 418;<br>}<br>location /some_another_location {<br> error_page 418 =@proxy2; return 418;<br>}<br><br>Правда же, что если директивы настроек @proxy1 и @proxy2 разные, <br>то не получится как в предыдущей конфигурации вынести на верхний уровень общую,<br>(то есть придётся использовать некрасивый хак с error_page, <br>либо copypaste, как советуют в докладе)?<br>Спасибо.<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
Четверг, 13 апреля 2017, 22:01 +03:00 от Maxim Dounin <mdounin@mdounin.ru>:<br>
<br>
<div id="">
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div>
<base target="_self" href="https://e.mail.ru/">
<div id="style_14921100660000000981_BODY">Hello!<br>
<br>
On Thu, Apr 13, 2017 at 09:22:05PM +0300, Дмитрий Мурзин wrote:<br>
<br>
<div class="mail-quote-collapse">> Спасибо за ответ!<br>
> Да, я читал это сообщение, но не очень его понял.<br>
> Можете, пожалуйста, пояснить, что значит<br>
> <br>
> > Лично я против goto, потому что это приведёт к тому, что люди ради<br>
> > экономии пары строк будут его использовать там, где нужно сделать<br>
> > законченную конфигурацию внутри location'а.<br>
> <br>
> <br>
> Например, если у меня есть следующий конфиг: <br>
> location @proxy {<br>
> ...много строк настройки прокси...<br>
> }<br>
> <br>
> location /png {<br>
> error_page 418 =@proxy; return 418;<br>
> }<br>
> location /pic {<br>
> error_page 418 =@proxy; return 418;<br>
> }<br>
> <br>
> Можете, пожалуйста, пояснить, <br>
> как в этом случае "сделать законченную конфигурацию внутри location'а".<br>
> Спасибо.<br>
</div><br>
Я бы рекомендовал так:<br>
<br>
... много строк настройки ...<br>
<br>
location /png {<br>
proxy_pass ...<br>
}<br>
<br>
location /pic {<br>
proxy_pass ...<br>
}<br>
<br>
Настройки в nginx'е наследуются, и если они одинаковые - именно <br>
этим и стоит пользоваться как основным инструментом сокращения <br>
размеров конфига.<br>
<br>
Если же настройки разные, то в любом случае надо делать разные <br>
настройки:<br>
<br>
location /png {<br>
proxy_pass ...<br>
... много строк настройки для проксирования /png ...<br>
}<br>
<br>
location /pic {<br>
proxy_pass ...<br>
... много строк настройки для проксирования /pic ...<br>
}<br>
<br>
Основной проблемой конфигурации с переходами, как в вашем случае, <br>
является невозможность при редактировании конфигурации за конечное <br>
время понять, на какие запросы и как повлияют вносимые изменения. <br>
Это становится актуально на больших конфигурациях, когда в рамках <br>
одного сервера могут быть сотни различных location'ов.<br>
<br>
Вот тут есть доклад Игоря на соответствующую тему на nginx.conf <br>
2014:<br>
<br>
Scaleable nginx configuration<br>
<a href="https://youtu.be/YWRYbLKsS0I" target="_blank">https://youtu.be/YWRYbLKsS0I</a><br>
<br>
Русские варианты того же доклада:<br>
<br>
<a href="http://highload.guide/blog/scalable-configuration-nginx.html" target="_blank">http://highload.guide/blog/scalable-configuration-nginx.html</a><br>
<a href="https://youtu.be/fcG-7k20oG8" target="_blank">https://youtu.be/fcG-7k20oG8</a><br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://nginx.org/" target="_blank">http://nginx.org/</a><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div>
<base target="_self" href="https://e.mail.ru/">
</div>
</div>
</div>
</blockquote>
<br>
<br>--<br>С уважением, <br>Дмитрий Мурзин<br></BODY></HTML>