Re: Пролагивание коннектов при проверке синтаксиса

Maxim Dounin mdounin на mdounin.ru
Чт Ноя 15 13:55:45 UTC 2018


Hello!

On Thu, Nov 15, 2018 at 12:42:51PM +0300, kpoxa wrote:

> Добрый день.
> 
> Не помогает такой вариант:
> 
> http {
>  server {
>   server_name bind_only;
>   listen 80;
>   listen 443 ssl;
>   location / { return 200;}
>  }
>  server {
>   listen ip10:443;
>  }
>  server {
>   listen ip11:443;
>  }
> }
> stream {
>  server {
>   listen ip1:443;
>  }
>  server {
>   listen ip2:443;
>  }
>  server {
>   listen ip3:443;
>  }
> }
> 
> Всё равно nginx при проверке синтаксиса делает bind ко всем адресам,
> которые указаны в listen;

Как я уже писал ранее, если один и тот же порт пытаться 
использовать в разных модулях - будут проблемы.

В приведённой конфигурации - в http-модуле будет создан 
listen-сокет на *:443, а в stream-модуле - сокеты на ip1:443, 
ip2:443, ip3:443.  Вероятно, именно попытки bind'а на ip1:443, 
ip2:443 и ip3:443 вы приняли за "делает bind ко всем адресам".  На 
самом деле не ко всем, а только к тем, что указаны в 
stream-модуле.

Однако проблема не в этом, а в том, что на Линуксе такая 
конфигурация банально не заработает, так как открыть сокет на 
ip:443 при имеющемся открытом сокете на *:443 - на Линуксе 
нельзя.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru