Почему обратный прокси-сервер используется с WebSockets - PullRequest
0 голосов
/ 13 апреля 2020

Я новичок в мире веб-разработки и взаимодействия сервер-клиент, поэтому я хотел бы получить разъяснение по этой теме c, которая ускользает от меня. Пожалуйста, имейте в виду, что я буду использовать Socket.io и WebSockets взаимозаменяемо.

Скажем, у нас есть приложение, которое запускает внутренний веб-сервер, такой как gunicorn, для управления приложением Python, написанным в некоторой среде ( скажем Flask с Socket.io), который использует WebSockets для постоянного подключения клиентов к серверу. Насколько я понимаю, при использовании WebSockets клиент поддерживает постоянное открытое соединение с внутренним сервером (в данном случае gunicorn), и пакеты данных обмениваются непосредственно между внутренним сервером и клиентом без какого-либо " средний человек ". То есть, допустим, у нас есть Nginx в качестве интерфейсного WebServer, работающего на порту 80, и gunicorn, работающего на порте 5000, то после установления соединения никакие пакеты данных никогда не будут проходить через интерфейсный сервер и будут go непосредственно на внутренний сервер. Тем не менее, во многих онлайн-уроках я вижу, как веб-разработчики настраивают Nginx на прокси для gunicorn, настраивая конфигурации для пересылки всех пакетов WebSockets, обычно с чем-то вроде Location /socket.io{....} с заменой ..., среди прочего, на утверждение, которое переадресация на порт 5000.

Может ли кто-нибудь дать объяснение взаимодействия между этими 3 ключевыми частями головоломки (WebSocket / Socket.io, Nginx, Gunicron)?

Спасибо

...