上游太大 - nginx + codeigniter

16 浏览
0 Comments

上游太大 - nginx + codeigniter

我从Nginx得到了这个错误,但似乎无法解决它!我正在使用codeigniter,并且正在使用数据库进行会话。所以我想知道头部怎么可能太大。有没有办法检查头部是什么?或者可能看看我能做些什么来修复这个错误?

如果你需要我上传任何配置文件或其他东西,请告诉我,我会根据你的要求进行更新。

更新:

我将以下内容添加到配置文件中:

proxy_buffer_size 512k;

proxy_buffers 4 512k;

proxy_busy_buffers_size 512k;

现在我仍然得到以下错误:

2012/12/16 12:40:27 [error] 31235#0: *929 upstream sent too big header while reading response header from upstream, client: 24.63.77.149, server: jdobres.xxxx.com, request: "POST /main/login HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "jdobres.xxxx.com", referrer: "http://jdobres.xxxx.com/"

0
0 Comments

使用nginx + fcgiwrap时出现了"Upstream too big"的问题。原因是客户端发送的请求URL太长,导致nginx无法处理。解决方法是通过调整nginx的配置参数来增大请求URL的限制长度。

首先,需要在nginx的配置文件中添加以下内容:

location ~ ^.*\.cgi$ {

fastcgi_pass unix:/var/run/fcgiwrap.sock;

fastcgi_index index.cgi;

fastcgi_param SCRIPT_FILENAME /opt/nginx/bugzilla/$fastcgi_script_name;

include /etc/nginx/fastcgi_params;

client_max_body_size 0;

client_body_in_file_only clean;

client_body_temp_path /opt/nginx/bugzilla/data/request_body 1 2;

}

然后,可以通过开启调试模式来查看nginx的日志信息,找到具体的错误原因:

location ~ ^.*\.cgi$ {

error_log /var/log/nginx/bugzilla.log debug;

# ...

}

在日志中,可能会看到类似以下的错误信息:

2015/03/18 10:24:40 [debug] 4625#0: *2 upstream split a header line in FastCGI records
2015/03/18 10:24:40 [error] 4625#0: *2 upstream sent too big header while reading response header from upstream, client: 10....

如果希望看到"414 request-uri too large"的错误信息而不是"502 bad gateway",可以调整nginx的配置参数:

# 在http或server块中添加以下内容

large_client_header_buffers 4 8k;

如果以上配置不起作用,可以尝试使用以下配置:

large_client_header_buffers 4 4k;

此外,还可以通过调整fastcgi的缓冲区大小来解决"upstream split a header line in FastCGI records"的问题。在nginx的配置文件中,添加以下内容:

location ~ ^.*\.cgi$ {

fastcgi_buffer_size 8k;

fastcgi_buffers 16 4k;

# ...

}

以上就是解决"Upstream too big"问题的方法。通过调整nginx和fastcgi的配置参数,可以增大请求URL的限制长度,从而解决请求过大的问题。

0
0 Comments

问题原因:nginx和codeigniter的结合导致了上游过大的问题。

解决方法:修改nginx的配置文件,在http或server部分添加或修改以下指令:

proxy_buffer_size 128k;

proxy_buffers 4 256k;

proxy_busy_buffers_size 256k;

具体位置:在/etc/nginx/nginx.conf文件的http块中。

另外,还可以将以上三个指令的值增大为512k,以确保解决问题。

可能出现循环重定向的情况。

在访问日志中没有发现在故障发生之前的重定向。

使用以上配置时出现错误:"proxy_busy_buffers_size" must be less than the size of all "proxy_buffers" minus one buffer

0
0 Comments

在nginx和codeigniter中出现"Upstream too big"这个问题的原因是代理和fastcgi缓冲区的大小不足。解决方法是在nginx.conf文件的http块中添加以下内容:

proxy_buffer_size 128k;

proxy_buffers 4 256k;

proxy_busy_buffers_size 256k;

然后在php的location块中添加以下内容:

fastcgi_buffer_size 128k;

fastcgi_buffers 4 256k;

fastcgi_busy_buffers_size 256k;

这样做的区别是代理和fastcgi缓冲区的设置不同。更多关于HttpProxyModule模块和HttpFastcgiModule的信息可以参考nginx的官方文档。在http块中添加这些配置可以避免在每个子域服务器上都进行配置,提高了配置的简洁性。另外,需要注意的是以proxy_开头的配置项需要插入到nginx.conf文件的http{}部分。

关于fastcgi_buffers配置项,数字4表示缓冲区的数量,256k表示每个缓冲区的大小。这样的配置可以提高nginx处理PHP请求的效率。

至于为什么设置fastcgi_buffer_size为128k,以及如何在服务器上进行测量以使nginx正常工作,目前文中没有提供明确的解释。

另外,需要注意的是"proxy_busy_buffers_size"的大小必须小于"proxy_buffers"的总大小减去一个缓冲区的大小。

最后,还有读者提到可以只在location ~ .php$块中添加配置,而不必在两个地方都添加。这样也可以解决问题。

以上是关于解决"Upstream too big"问题的原因和解决方法的整理总结。这些配置可以帮助优化nginx和codeigniter的性能,提高网站的响应速度和流畅度。

0