我使用nginx作为ASP.net后端服务器的反向代理。我希望nginx为我的WebSocket连接做gzip压缩(即permessage-deflate /rfc 7692),但我找不到任何配置选项。nginx能做到吗?有没有插件让它工作?如果没有,有没有别的东西我可以用?
y1aodyip1#
只要编辑你的nginx配置。2静态站点,代理或者网络套接字都是一样的
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
如果这不起作用,尝试在通过套接字发送消息之前压缩消息。2你可以在这里阅读更多信息:https://docs.nginx.com/nginx/admin-guide/web-server/compression/
xcitsw882#
是的,nginx可以对WebSocket连接执行gzip压缩。要在nginx中对WebSocket连接启用gzip压缩,您可以在处理WebSocket连接的位置块中的nginx配置文件中包含gzip指令。例如:
location /ws { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; gzip on; gzip_proxied any; gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; }
此配置将为通过WebSocket连接传输到/ws位置的所有基于文本的内容类型(例如,text/plain、text/css、application/json等)启用gzip压缩。您可以调整内容类型列表以满足特定需要。您可能还需要调整gzip_comp_level指令以设置压缩级别(1-9,9表示最高压缩级别)。较高的压缩级别将获得更好的压缩效果,但也可能会增加CPU使用率。
2条答案
按热度按时间y1aodyip1#
只要编辑你的nginx配置。2静态站点,代理或者网络套接字都是一样的
如果这不起作用,尝试在通过套接字发送消息之前压缩消息。2你可以在这里阅读更多信息:https://docs.nginx.com/nginx/admin-guide/web-server/compression/
xcitsw882#
是的,nginx可以对WebSocket连接执行gzip压缩。要在nginx中对WebSocket连接启用gzip压缩,您可以在处理WebSocket连接的位置块中的nginx配置文件中包含gzip指令。例如:
此配置将为通过WebSocket连接传输到/ws位置的所有基于文本的内容类型(例如,text/plain、text/css、application/json等)启用gzip压缩。您可以调整内容类型列表以满足特定需要。
您可能还需要调整gzip_comp_level指令以设置压缩级别(1-9,9表示最高压缩级别)。较高的压缩级别将获得更好的压缩效果,但也可能会增加CPU使用率。