python - nginx - 在从上游读取响应标头时,上游发送了太大的标头
问题描述
我有一个用python和flask框架编写的电子商务项目,我在会话中保留购物车信息,当我尝试将产品添加到会话时,nginx给出了这个错误:
上游从上游读取响应标头时发送了太大的标头,客户端:xx.xxx.xx.xxx,服务器:mysite.com,请求:“POST /add_to_cart HTTP/1.1”,上游:“uwsgi://unix:/path /uwsgi.sock:”,主机:“mysite.com”
当我在会话中有很多信息时会发生这种情况,
我尝试添加fastcgi
和proxy_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
(与您的情况相关的指令)指定适当的大小。
这是我的帖子,对类似指令有一些见解,proxy_buffer_size
. 有许多*_buffer_size
指令,每个类似“代理”的 NGINX 模块都有一个(fastcgi、proxy、uwsgi),但是您如何进行调优(以及它们的基本工作方式)是相同的。
您可以直接放入server
块中尝试,无需测量:
uwsgi_buffer_size 16k;
uwsgi_busy_buffers_size 24k;
推荐阅读
- r - 文件错误:无法打开 R 项目中文件的连接
- javascript - 如何在我的反应应用程序中获取 mp3 文件夹
- android - Android Room:插入几个具有关系的实体
- python - 如何打印多个数组/列表中的多个值,字符串仅在第一个输出前面,值之间用逗号分隔?
- javascript - 如何在js对象中找到匹配的键并返回它的值
- javascript - 在 Google 甘特图的矩形元素内嵌套跨度文本
- spring - Tomcat 9 w/ Apache DBCP + Spring 5 + Oracle 12c + SqlArrayValue
- python - 在 except 之后继续一个函数
- angular - Angular 表单中的 removeAt() 总是删除第一个值
- ios - 调用并添加到 UIScrollview 时未设置自定义 UIView 类的属性