Upstream too big - nginx + codeigniter

前端 未结 6 1718
深忆病人
深忆病人 2020-11-30 20:08

I am getting this error from Nginx, but can\'t seem to figure it out! I am using codeigniter and am using the database for sessions. So I\'m wondering how the header can eve

相关标签:
6条回答
  • 2020-11-30 20:29

    Add this to your http {} of the nginx.conf file normally located at /etc/nginx/nginx.conf:

    proxy_buffer_size   128k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   256k;
    

    Then add this to your php location block, this will be located in your vhost file look for the block that begins with location ~ .php$ {

    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    
    0 讨论(0)
  • 2020-11-30 20:35

    I encountered this problem in the past (not using codeigniter but it happens whenever the responses contain a lot of header data) and got used to tweaking the buffers as suggested here, but recently I got bitten by this issue again and the buffers were apparently okay.

    Turned out it was spdy's fault which I was using on this particular project and solved by enabling spdy headers compression like this:

    spdy_headers_comp 6;
    
    0 讨论(0)
  • 2020-11-30 20:38
    Problem: upstream sent too big header while reading 
    response header from upstream Nginx with Magento 2
    Solution: Replace given below setting into /nginx.conf.sample File

    • fastcgi_buffer_size 4k;

    with

    • fastcgi_buffer_size 128k;
    • fastcgi_buffers 4 256k;
    • fastcgi_busy_buffers_size 256k;
    0 讨论(0)
  • 2020-11-30 20:39

    I have proven that this is also sent when an invalid header is transmitted. Invalid characters or formatting of the HTTP headers, cookie expiration set back by more than a month, etc will all cause: upstream sent too big header while reading response header from upstream

    0 讨论(0)
  • 2020-11-30 20:43

    using nginx + fcgiwrap + request too long

    I had the same problem because I use a nginx + fcgiwrap configuration:

    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;
        # attachments can be huge
        client_max_body_size 0;
        client_body_in_file_only clean;
        # this is where requests body are saved
        client_body_temp_path /opt/nginx/bugzilla/data/request_body 1 2;
    }
    

    and the client was doing a request with a URL that was about 6000 characters (a bugzilla request).

    debugging...

    location ~ ^.*\.cgi$ {
        error_log /var/log/nginx/bugzilla.log debug;
        # ...
    }
    

    This is what I got in the logs:

    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....
    

    can I have "414 request-uri too large" instead of "502 bad gateway"?

    Yes you can! I was reading How to set the allowed url length for a nginx request (error code: 414, uri too large) before because I thought "hey the URL's too long" but I was getting 502's rather than 414's.

    large_client_header_buffers

    Try #1:

    # this goes in http or server block... so outside the location block
    large_client_header_buffers 4 8k;
    

    This fails, my URL is 6000 characters < 8k. Try #2:

    large_client_header_buffers 4 4k;
    

    Now I don't see a 502 Bad Gateway anymore and instead I see a 414 Request-URI Too Large

    "upstream split a header line in FastCGI records"

    Did some research and found somewhere on the internet:

    • http://forum.nginx.org/read.php?2,4704,4704
    • https://www.ruby-forum.com/topic/4422529
    • http://mailman.nginx.org/pipermail/nginx/2009-August/014709.html
    • http://mailman.nginx.org/pipermail/nginx/2009-August/014716.html

    This was sufficient for me:

    location ~ ^.*\.cgi$ {
        # holds request bigger than 4k but < 8k
        fastcgi_buffer_size 8k;
        # getconf PAGESIZE is 4k for me...
        fastcgi_buffers 16 4k;
        # ...
    }
    
    0 讨论(0)
  • 2020-11-30 20:45

    Modify your nginx configuration and change/set the following directives:

        proxy_buffer_size   128k;
        proxy_buffers   4 256k;
        proxy_busy_buffers_size   256k;
    
    0 讨论(0)
提交回复
热议问题