<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
В общем поковырялся недолго в исходниках. Простым патчем врубил
reuseport всегда, вне зависимости от того, что в конфигах находится.
Может кому-то еще пригодится, хотя это конечно хак.<br>
<br>
<pre>diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c</pre>
<pre>index 5a53bac..5bb8de2 100644</pre>
<pre>--- a/src/core/ngx_connection.c</pre>
<pre>+++ b/src/core/ngx_connection.c</pre>
<pre>@@ -472,7 +472,7 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle)</pre>
<pre> </pre>
<pre> #if (NGX_HAVE_REUSEPORT)</pre>
<pre> </pre>
<pre>- if (ls[i].reuseport) {</pre>
<pre>+ if (1 || ls[i].reuseport) {</pre>
<pre> int reuseport;</pre>
<pre> </pre>
<pre> reuseport = 1;</pre>
<br>
<br>
<br>
<br>
<div class="moz-cite-prefix">On 08.04.2016 14:54, navern wrote:<br>
</div>
<blockquote cite="mid:57079BF7.9070801@yandex.ru" type="cite">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
На одном из серверов около 11 тысяч виртуальных хостов в nginx'е.
Бывает и больше:) Серверов тоже далеко не десять.<br>
<br>
Неизвестен заранее ни список IP адресов, ни список имен.<br>
<br>
Вариант с созданием для каждого IP адреса конфига в виде:
<ip_addr>.conf и внутри дефолтным сервером конечно решает
задачу, но для динамически выделяемых IP адресов не совсем
подходит. Поэтому пока буду пытаться решать иначе.<br>
<br>
<div class="moz-cite-prefix">On 08.04.2016 14:25, Илья Шипицин
wrote:<br>
</div>
<blockquote
cite="mid:CAFHpkQHW5gS1HTs0PyCrwxAUHoM2EK5++XpvpSdTHas8+94KiQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>более или менее типовая ситуация заключается в том,
что вы отвечаете по известному списку днс-имен.<br>
</div>
это - недефолтные хосты.<br>
<br>
</div>
в дефолтном вы делаете <br>
<br>
<br>
server {<br>
listen x.x.x.x:80 default accept_filter=httpready;<br>
listen x.x.x.x:443 default http2 reuseport
accept_filter=dataready;<br>
server_name _; <br>
access_log off;<br>
error_log /dev/null;<br>
location / {<br>
return 444;<br>
}<br>
}<br>
<br>
<br>
</div>
и, всякие скрипткидизы, которые тыкают в ip-адрес и ищут
уязвимый софт, перестают вас беспокоить в логах.<br>
<br>
<br>
<br>
</div>
или у вас список доменов заранее неизвестен ? <br>
<div>
<div>
<div><br>
</div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">8 апреля 2016 г., 14:41 пользователь
navern <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:livingdeadzerg@yandex.ru" target="_blank">livingdeadzerg@yandex.ru</a>></span>
написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Неудобно, потому
что IP адреса не все дефолтные. И необязательно он будет
всегда на этом сервере, а может мигрировать на другой.
Придется еще добавлять логику по перемещению
"дефолтного" IP и это всё действительно неудобно.<br>
<br>
Я понимаю, как работают дефолтные хосты, часть IP
адресов так и указаны. Можете просто поверить на слово,
что для части IP адресов дефолтный хост не очень
работает.<br>
<br>
С точки зрения конфигурирования можно решить конечно, но
это будет не очень удобно. Именно из-за динамического
выделения IP. Придется держать дефолтный хост отдельно
для каждого IP адреса и делать проверки при каждом
перемещении/удалении IP адреса с сервера.<br>
<br>
listen * не подходит, потому что не только nginx слушает
80 и 443 порт на сервере.<br>
<br>
Пока что уже полез ковыряться в исходниках, сейчас
разбираюсь что и как работает там:)<span class=""><br>
<br>
<div>On 07.04.2016 22:10, Vadim A. Misbakh-Soloviov
wrote:<br>
</div>
</span>
<blockquote type="cite"><span class="">
<blockquote type="cite">
<pre>Ну в нашем случае нам как раз подходит указать везде reuseport явно,
чтобы он работал всегда. Указывать только в одном месте очень неудобно
для автоматического конфигурирования.
</pre>
</blockquote>
<pre>Ну, почему же? Просто обрабатывайте "дефолтный" хост отдельно от остальных.
Сначала заполняете его (а то и вообще не трогаете один раз сконфигуряв)
нужными опциями, кладёте в /etc/nginx/vhosts.d/default/??_bla. Потом уже
кладёте "основные" в /etc/nginx/vhosts.d/client/site без указания опций в
listen.
(пути от балды)
</pre>
<blockquote type="cite">
<pre>Это не очень как раз удобно, потому что проще накатывать конфиг по
шаблону, с включенными опциями сразу(как в случае с ssl/http2), чем
перед этим парсить все конфиги и проверять есть ли уже такой IP адрес и
есть ли там опции(тоже вариант решения проблемы, но мне он нравится пока
меньше).
</pre>
</blockquote>
<pre>1) http2, вроде как, всё равно будет работать для всех. Ну и лично я его тоже
только в дефолтном держу.
2) зачем проверять? Просто явно генерите дефолтный конфиг. И достаточно будет
проверять лишь его наличие.
3) а чем, кстати, вам не подходит listen * и [::]?
</pre>
<br>
<fieldset></fieldset>
<br>
</span>
<pre>_______________________________________________
nginx-ru mailing list
<a moz-do-not-send="true" href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a>
<a moz-do-not-send="true" href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></pre>
</blockquote>
<br>
</div>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a moz-do-not-send="true" href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a moz-do-not-send="true"
href="http://mailman.nginx.org/mailman/listinfo/nginx-ru"
rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
nginx-ru mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://mailman.nginx.org/mailman/listinfo/nginx-ru">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
nginx-ru mailing list
<a class="moz-txt-link-abbreviated" href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a>
<a class="moz-txt-link-freetext" href="http://mailman.nginx.org/mailman/listinfo/nginx-ru">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></pre>
</blockquote>
<br>
</body>
</html>