我有一个用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
(与您的情况相关的指令)指定正确的大小。
这是我的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/