Re: Вопрос по модулю stream - хочу проксировать TCP в UDP

Pavel Odintsov pavel.odintsov на gmail.com
Ср Июл 6 18:02:20 UTC 2016


Тут вопрос сложный. Конкретно мне от TCP нужна возможность принять от
клиента не более XX байт запроса, передать их бэкэнду, забрать его
ответ и раздать клиенту по TCP. Мне нужен spoon feeding в чистом виде.

Если клиент прислал запрос по TCP больше, чем 65к (сколько предельно
лезет в UDP) вполне разумно ожидать, что в этом случае он будет
дропнут.

2016-07-06 19:26 GMT+03:00 Konstantin Tokarev <annulen на yandex.ru>:
>
>
> 06.07.2016, 17:48, "Pavel Odintsov" <pavel.odintsov на gmail.com>:
>> Очень жаль, но технических преград получается этому нету?
>
> Протоколы, основанные на UDP, часто зависят от того, что каждая датаграмма содержит независимое сообщение. Примитивное преобразование TCP -> UDP, которое можно было бы сделать в универсальном сервере вроде Nginx, будет разбивать непрерывный TCP-поток на датаграммы произвольным образом. Если этот вариант устраивает, тогда технических препятствий действительно нет. В противном случае в nginx придется реализовать отдельный протокол для пересылки датаграмм через TCP, а это уже более серьезная доработка
>
>> Вопрос сугубо в том, что нет опции для поддержки этой фичи?
>>
>> On Wednesday, 6 July 2016, Roman Arutyunyan <arut на nginx.com> wrote:
>>> Добрый день,
>>>
>>> On Wed, Jul 06, 2016 at 04:55:38PM +0300, Pavel Odintsov wrote:
>>>> Всем привет!
>>>>
>>>> Очень нравится модуль stream - прекрасная фишка ;)
>>>>
>>>> Но захотелось немного странного, имеется UDP сервер, к которому
>>>> хочется добавить "быстрый" TCP и TLS силами Nginx.
>>>>
>>>> Но проблема в том, что  при вот такой конфигурации:
>>>> stream {
>>>>     upstream backend {
>>>>         server 127.0.0.1:1122 weight=5;
>>>>         server 127.0.0.22:1122 weight=1;
>>>>     }
>>>>     server {
>>>>         # Listen UDP
>>>>         listen 127.0.0.1:53 udp;
>>>>         # Listen TCP
>>>>         listen 127.0.0.1:53;
>>>>
>>>>         # Listen TLS/SSL
>>>>         listen 127.0.0.1:853 ssl;
>>>>         proxy_connect_timeout 1s;
>>>>         proxy_timeout 3s;
>>>>         proxy_pass backend;
>>>>         ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
>>>>         ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
>>>>     }
>>>> }
>>>>
>>>> Если запрос на Nginx приходит по UDP, то он отправляется на бэкэнд по
>>>> UDP. Если приходит по TCP либо SSL - он уходит по TCP на бэкэнд.
>>>>
>>>> Мне вот нужно, чтобы связь с бэкэндом была сугубо по UDP, но как этого
>>>> достичь - не понимаю.
>>>
>>> Пока никак.  Протокол проксирования всегда тот же, что и протокол клиента.
>>>
>>> На текущий момент не ясно, насколько востребовано проксирование по
>>> другому протоколу.
>>>
>>> --
>>> Roman Arutyunyan
>>>
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru на nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>> --
>> Sincerely yours, Pavel Odintsov
>> ,
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
> --
> Regards,
> Konstantin
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
Sincerely yours, Pavel Odintsov


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