我有一个用python和flask框架编写的电子商务项目,我在会话中保留购物车信息,当我尝试将产品添加到会话中时,nginx给出此错误:


  上游从上游读取响应标头时发送了太大的标头,客户端:xx.xxx.xx.xxx,服务器:mysite.com,请求:“ POST / add_to_cart HTTP / 1.1”,上游:“ uwsgi:// unix:/ path /uwsgi.sock:“,主持人:” mysite.com“


当我在会话中有很多信息时,会发生这种情况,

我尝试添加fastcgiproxy_buffer参数,但仍然无法正常工作,这是我的nginx conf文件:

server {
  listen       443 ssl;
  server_name  mysite.com;

  ssl_certificate       /path/nginx.pem;
  ssl_certificate_key   /path/nginx.key;

  include              /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam          /etc/letsencrypt/ssl-dhparams.pem;

  access_log      /path/access.log main;

  fastcgi_buffers  16 16k;
  fastcgi_buffer_size 32k;

  proxy_buffering             on;
  proxy_buffer_size         128k;
  proxy_buffers           4 256k;
  proxy_busy_buffers_size   256k;

  location /static/ {
    alias         /path/web/static/;
    access_log    off;
    index         index.html index.htm;
  }

  location / {
    try_files       $uri @uwsgi;
    root            /path/www/;
    index           index.html index.htm;
  }

  location @uwsgi {
    include uwsgi_params;
    uwsgi_pass  unix:/path/web/uwsgi.sock;
  }
}

最佳答案

如果您能够通过POST重构确切的curl请求,或者通过其他方式测量实际的标头大小,则可以为uwsgi_buffer_size(与您的情况相关的指令)指定正确的大小。

这是我的post,对类似的指令proxy_buffer_size有所了解。 *_buffer_size指令很多,每个类似“代理”的NGINX模块都有一个指令(fastcgi,proxy,uwsgi),但是您如何调整它们(以及它们的工作原理)是相同的。

您可以尝试将其直接放置在server块中,而无需进行测量:

uwsgi_buffer_size 16k;
uwsgi_busy_buffers_size 24k;

关于python - nginx-上游从上游读取响应 header 时发送了太大的 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57933443/

10-10 01:55