【问题标题】:Send Uncompressed Request to Nginx Proxy向 Nginx 代理发送未压缩的请求
【发布时间】:2020-04-14 03:11:02
【问题描述】:

我的网站将 Nginx 作为反向代理运行在 ASP.net 应用程序服务器之前。 ASP 应用服务器不支持使用 gzip 压缩的大型请求正文。

Nginx 是否可以在将 HTTP 请求发送到 ASP 应用服务器之前对其进行解压?

【问题讨论】:

标签: asp.net nginx asp.net-core asp.net-core-webapi


【解决方案1】:

如果你有支持 lua 或 openresty 的 nginx,你可以使用 lua-zlib 模块来做到这一点。

-- Handle request
local zlib = require 'zlib'

myStr = nil
if ngx.req.get_headers()['Content-Encoding'] == 'gzip' then

    ngx.req.read_body()
    local myStr = zlib.inflate()(ngx.var.request_body, 'finish')

    ngx.req.clear_header('Content-Encoding')
    ngx.req.clear_header('Content-Length')
    ngx.req.set_body_data(myStr)
end

来源:

https://notes.ayushsharma.in/2016/10/decompressing-request-using-gzip-with-nginx http://www.pataliebre.net/howto-make-nginx-decompress-a-gzipped-request.html#.VfgySp2qqko

【讨论】:

    【解决方案2】:

    我会引导您访问此站点 http://www.pataliebre.net/howto-make-nginx-decompress-a-gzipped-request.html#.Xgslz0czZPZ,它包含有用的 sn-ps 代码,应该可以满足您的需求。

    【讨论】:

      【解决方案3】:

      我认为您正在寻找的是 client_max_body_size

      改变的步骤

      1> vi /etc/nginx/nginx.conf

      2> 添加这个

      http {
        #all other configurations . . . 
        client_max_body_size: 10M; #add this thing
      }
      

      3> sudo nginx -t

      如果一切正常,则重新启动服务器并检查是否存在语法错误。

      4> sudo service nginx 重启

      如果上述步骤不起作用,您可以通过此停止 gzip

      server {
          gzip off;
          ...
      }
      

      并重复步骤 3 和 4

      【讨论】:

        猜你喜欢
        • 2021-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 2018-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多