kak*_*jan 0 python linux nginx flask nginx-config
我有一个用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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您能够POST通过curl或以其他方式测量实际标头大小来重建准确的请求,则可以为uwsgi_buffer_size(与您的情况相关的指令)指定正确的大小。
这是我的帖子,其中对类似的指令有一些见解proxy_buffer_size。有很多*_buffer_size指令,每个类似“代理”的 NGINX 模块都有一个(fastcgi、proxy、uwsgi),但是如何调整它们(以及它们本质上如何工作)是相同的。
您可以尝试直接放置在server块中,无需测量:
uwsgi_buffer_size 16k;
uwsgi_busy_buffers_size 24k;
Run Code Online (Sandbox Code Playgroud)