Может ли nginx выполнять прозрачное сжатие соединений websocket?

#nginx #websocket #proxy #compression #gzip

#nginx #websocket #прокси #сжатие #gzip

Вопрос:

У меня nginx действует как обратный прокси для ASP.net Внутренний сервер Kestrel.

Я бы хотел, чтобы nginx выполнял сжатие gzip (т. Е. permessage-deflate / rfc7692) для моих подключений к Websocket, но я не могу найти для этого никаких параметров конфигурации.

Может ли nginx это сделать? Существуют ли какие-либо плагины, чтобы заставить это работать? Если нет, могу ли я использовать что-нибудь еще?

Ответ №1:

К сожалению, ответ «нет».

В основных модулях nginx нет ничего, что поддерживало бы websocket и сжатие в частности. Конфигурация, предоставленная в ответе @m00ny, предназначена для прокси-http-запросов, это не окажет никакого влияния на websockets.

Ответ №2:

просто отредактируйте конфигурацию nginx. Это то же самое для статических сайтов, прокси или websockets

 gunzip on; // be sure to include this. This enables runtime decompression for clients that do not accept gzip
gzip on; //enables gzip for request
gzip_proxied any; //enables compression on proxies
gzip_types *; //compress everything there is
  

если это не сработает, попробуйте сжать сообщения перед отправкой их через сокет.
Подробнее об этом можно прочитать здесь: https://docs.nginx.com/nginx/admin-guide/web-server/compression /