https://bugs.centos.org/view.php?id=14828

до RHEL-овских дистрибутивов доступа нет, у CentOS сейчас 4000+ неназначенных багов.
шансы на то, что RedHat бросится это чинить, думаю, дай бог, чтобы к 7.6 поправили


пересоберете пакет с поддержкой опции ?

15 мая 2018 г., 16:18 пользователь Konstantin Pavlov <thresh@nginx.com> написал:
Здравствуйте, Илья,

14.05.2018 13:30, Илья Шипицин wrot> 14 мая 2018 г., 15:04 пользователь
Ruslan Ermilov <ru@nginx.com
> <mailto:ru@nginx.com>> написал:
>
>     On Mon, May 14, 2018 at 12:14:28PM +0500, Илья Шипицин wrote:
>     > на днях зарелизился centos-7.5, в нем, к сожалению, все по прежнему
>     >
>     > завел тикет
>     >
>     > https://trac.nginx.org/nginx/ticket/1553
>     <https://trac.nginx.org/nginx/ticket/1553>
>     >
>     > посмотрите ?
>     >
>     > 29 апреля 2018 г., 3:40 пользователь Валентин Бартенев <vbart@nginx.com <mailto:vbart@nginx.com>>
>     > написал:
>     >
>     > > On Saturday, 28 April 2018 15:03:49 MSK Илья Шипицин wrote:
>     > > > привет!
>     > > >
>     > > > поддержка IP_BIND_ADDRESS_NO_PORT официально началась в ядре 4.2, но ...
>     > > > ее портировали в 3.10 на CentOS-7.4
>     > > >
>     > > > однако, портировали не очень качественно. константа определена не в том
>     > > > файле, в котором должна (и в котором ищет nginx)
>     > > >
>     > > > [root@xxx ~]# grep -r IP_BIND_ADDRESS_NO_PORT /usr/include/
>     > > > /usr/include/linux/in.h:#define IP_BIND_ADDRESS_NO_PORT    24
>     > > > [root@xxx ~]#
>     > > >
>     > > >
>     > > > т.е. если пакет собирать, как он собирается обычно, то поддержка
>     > > > IP_BIND_ADDRESS_NO_PORT не включается (хотя могла бы).
>     > > >
>     > > > скажите, вы официальные пакеты собираете каким образом ? кажется, имеет
>     > > > смысл поправить эту процедуру и дать эту крутую фичу пользователям
>     > > > CentOS-7.4
>     > > >
>     > >
>     > > Дело же не в ядре (не только в нем).  На линуксах интерфейс обеспечивает
>     > > glibc и именно туда смотрит nginx.
>
>     <linux/in.h> - это заголовочный файл ядра.  <netinet/in.h> - это
>     заголовочный файл glibc.  Приложения используют <netinet/in.h>.
>     В норме макрос IP_BIND_ADDRESS_NO_PORT есть в обоих файлах, что
>     означает, что поддержка есть и в ядре, и в glibc.  Утверждение о
>     том, что "константа определена не в том файле", ошибочное.
>
>     Как Вам уже пытался ранее объяснять Валентин, проблема заключается
>     в том, что в установленной версии glibc нет поддержки этого макроса.
>
>     Для себя Вы можете проблему решить так:
>
>             configure --with-cc-opt=-DIP_BIND_ADDRESS_NO_PORT=24
>
>
>
> для себя я, конечно, решу.
>
> первоначально мы попали в неочевидную ловушку
> 1) читаем про IP_BIND_ADDRESS_NO_PORT
> 2) читаем, что начиная с centos-7.4 должно работать
> 3) ставим официальный пакет
> 4) не работает (но чтобы это понять, пришлось залезть в отладочный лог и
> попрыгать с strace)
>
> в официальном пакете поправите ?

Нам усиленно кажется, что исправлять это надо в RHEL/CentOS.  Повесьте
им багу о несоответствии интерфейсов ядра и glibc, это наилучший выход
из этой ситуации.

--
Konstantin Pavlov
https://www.nginx.com/