Тут вопрос сложный. Конкретно мне от TCP нужна возможность принять от клиента не более XX байт запроса, передать их бэкэнду, забрать его ответ и раздать клиенту по TCP. Мне нужен spoon feeding в чистом виде.
Если клиент прислал запрос по TCP больше, чем 65к (сколько предельно лезет в UDP) вполне разумно ожидать, что в этом случае он будет дропнут. 2016-07-06 19:26 GMT+03:00 Konstantin Tokarev <[email protected]>: > > > 06.07.2016, 17:48, "Pavel Odintsov" <[email protected]>: >> Очень жаль, но технических преград получается этому нету? > > Протоколы, основанные на UDP, часто зависят от того, что каждая датаграмма > содержит независимое сообщение. Примитивное преобразование TCP -> UDP, > которое можно было бы сделать в универсальном сервере вроде Nginx, будет > разбивать непрерывный TCP-поток на датаграммы произвольным образом. Если этот > вариант устраивает, тогда технических препятствий действительно нет. В > противном случае в nginx придется реализовать отдельный протокол для > пересылки датаграмм через TCP, а это уже более серьезная доработка > >> Вопрос сугубо в том, что нет опции для поддержки этой фичи? >> >> On Wednesday, 6 July 2016, Roman Arutyunyan <[email protected]> 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 >>> [email protected] >>> http://mailman.nginx.org/mailman/listinfo/nginx-ru >> >> -- >> Sincerely yours, Pavel Odintsov >> , >> >> _______________________________________________ >> nginx-ru mailing list >> [email protected] >> http://mailman.nginx.org/mailman/listinfo/nginx-ru > > > -- > Regards, > Konstantin > > _______________________________________________ > nginx-ru mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sincerely yours, Pavel Odintsov _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
