nginx - 上游发送太大 header 从上游读取响应 header
nginx - upstream sent too big header while reading response header from upstream
我有一个用 python 和 flask 框架编写的 e-commerce 项目,当我尝试将产品添加到 session 时,我将购物车信息保存在 session,nginx给出此错误:
upstream sent too big header while reading response header from upstream, client: xx.xxx.xx.xxx, server: mysite.com, request: "POST /add_to_cart HTTP/1.1", upstream: "uwsgi://unix:/path/uwsgi.sock:", host: "mysite.com"
当我在 session,
中有很多信息时会出现这种情况
我尝试添加 fastcgi
和 proxy_buffer
参数,但仍然无法正常工作,这是我的 nginx 配置文件:
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;
}
}
如果您能够通过 curl
重建准确的 POST
请求或以其他方式测量实际 header 大小,您可以为 uwsgi_buffer_size
指定合适的大小(与您的情况相关的指令)。
这是我的 post 对类似指令 proxy_buffer_size
的一些见解。有许多 *_buffer_size
指令,每个 "proxy"-like NGINX 模块都有一个(fastcgi、proxy、uwsgi),但是你如何调整它们(以及它们的基本工作方式)是相同的。
您可以直接在 server
块中尝试,无需测量:
uwsgi_buffer_size 16k;
uwsgi_busy_buffers_size 24k;
我有一个用 python 和 flask 框架编写的 e-commerce 项目,当我尝试将产品添加到 session 时,我将购物车信息保存在 session,nginx给出此错误:
upstream sent too big header while reading response header from upstream, client: xx.xxx.xx.xxx, server: mysite.com, request: "POST /add_to_cart HTTP/1.1", upstream: "uwsgi://unix:/path/uwsgi.sock:", host: "mysite.com"
当我在 session,
中有很多信息时会出现这种情况我尝试添加 fastcgi
和 proxy_buffer
参数,但仍然无法正常工作,这是我的 nginx 配置文件:
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;
}
}
如果您能够通过 curl
重建准确的 POST
请求或以其他方式测量实际 header 大小,您可以为 uwsgi_buffer_size
指定合适的大小(与您的情况相关的指令)。
这是我的 post 对类似指令 proxy_buffer_size
的一些见解。有许多 *_buffer_size
指令,每个 "proxy"-like NGINX 模块都有一个(fastcgi、proxy、uwsgi),但是你如何调整它们(以及它们的基本工作方式)是相同的。
您可以直接在 server
块中尝试,无需测量:
uwsgi_buffer_size 16k;
uwsgi_busy_buffers_size 24k;