nginx可以对WebSocket连接进行透明压缩吗?

os8fio9y  于 2022-12-26  发布在  Nginx
关注(0)|答案(2)|浏览(195)

我使用nginx作为ASP.net后端服务器的反向代理。
我希望nginx为我的WebSocket连接做gzip压缩(即permessage-deflate /rfc 7692),但我找不到任何配置选项。
nginx能做到吗?有没有插件让它工作?如果没有,有没有别的东西我可以用?

y1aodyip

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/

xcitsw88

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使用率。

相关问题