Nginx + problema fastcgi truncamento

votos
10

Eu estou executando um site Django usando a interface fastcgi para nginx. No entanto, algumas páginas estão sendo servidos truncada (ou seja, o código fonte da página simplesmente pára, às vezes no meio de uma tag). Como faço para corrigir isso (deixe-me saber que informação extra é necessário, e eu vou postá-lo)

detalhes:

Estou usando FLUP, e gerando o servidor fastcgi com o seguinte comando:

python ./manage.py runfcgi umask=000 maxchildren=5 maxspare=1 minspare=0 method=prefork socket=/path/to/runfiles/django.sock pidfile=/path/to/runfiles/django.pid

A configuração nginx é como se segue:

# search and replace this: {project_location}
pid /path/to/runfiles/nginx.pid;
worker_processes  2;
error_log /path/to/runfiles/error_log;
events {
    worker_connections  1024;
    use epoll;
}
http {
    # default nginx location
    include        /etc/nginx/mime.types;
    default_type    application/octet-stream;
    log_format main
        '$remote_addr - $remote_user [$time_local] '
            '$request $status $bytes_sent '
        '$http_referer $http_user_agent '
        '$gzip_ratio';
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
    connection_pool_size        256;
    client_header_buffer_size    1k;
    large_client_header_buffers    4 2k;
    request_pool_size        4k;
    output_buffers   4 32k;
    postpone_output  1460;
    sendfile        on;
    tcp_nopush             on;
    keepalive_timeout      75 20;
    tcp_nodelay            on;
    client_max_body_size       10m;
    client_body_buffer_size    256k;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    client_body_temp_path      /path/to/runfiles/client_body_temp;
    proxy_temp_path            /path/to/runfiles/proxy_temp;
    fastcgi_temp_path            /path/to/runfiles/fastcgi_temp;
    gzip on;
    gzip_min_length  1100;
    gzip_buffers     4 32k;
    gzip_types       text/plain text/html application/x-javascript text/xml text/css;
    ignore_invalid_headers    on;
    server {
        listen 80;
        server_name alpha2.sonyalabs.com;
        index index.html;
        root   /path/to/django-root/static;
        # static resources
        location ~* ^/static/.*$
        {
        root   /path/to/django-root;
                expires 30d;
                break;
        }
        location / {
            # host and port to fastcgi server
            fastcgi_pass unix:/path/to/runfiles/django.sock;
            fastcgi_param PATH_INFO $fastcgi_script_name;
            fastcgi_param REQUEST_METHOD $request_method;
            fastcgi_param QUERY_STRING $query_string;
            fastcgi_param CONTENT_TYPE $content_type;
            fastcgi_param CONTENT_LENGTH $content_length;
            fastcgi_pass_header Authorization;
            fastcgi_intercept_errors off;
        }
        location /403.html {
                root   /usr/local/nginx;
                access_log   off;
        }
        location /401.html {
                root   /usr/local/nginx;
                access_log   off;
        }
        location /404.html {
                root   /usr/local/nginx;
                access_log   off;
        }
        location = /_.gif {
                    empty_gif;
                access_log   off;
        }
            access_log    /path/to/runfiles/localhost.access_log main;
            error_log    /path/to/runfiles/localhost.error_log;
        }
}
Publicado 01/10/2008 em 21:26
fonte usuário
Em outras línguas...                            


6 respostas

votos
7

Eu tive o mesmo problema exato correndo Nagios em nginx. Me deparei com a sua pergunta, enquanto pesquisando por uma resposta, e ler "permissão negada" respostas relacionadas ele me surpreendeu (e talvez ele vai ajudar você):

  • Nginx error.log foi relatar:

    2011/03/07 11:36:02 [crit] 30977 # 0: * 225952 open () "/ var / lib / nginx / fastcgi / 2/65/0000002652" falhou (13: Permissão negada)

  • então eu apenas correu # chown -R www-data: www-data / var / lib / nginx / fastcgi

  • Corrigido! (E muito obrigado pela sua ajuda indireta)

Respondeu 07/03/2011 em 11:54
fonte usuário

votos
5

Verifique seus logs de erros de "Permission Denied" erros de gravação em .../nginx/tmp/...arquivos. Nginx irá funcionar bem, a menos que ele precisa de espaço temporário, e que normalmente acontece em 32K limites. Se você encontrar esses erros, certifique-se o diretório tmp é gravável pelas corridas usuário nginx como.

Respondeu 23/12/2010 em 05:37
fonte usuário

votos
3

O interface de fastcgi você está usando e como. É FLUP? Se sim, colar a forma como você gerar o servidor e como ele é viciado em nginx. Sem essa informação é apenas adivinhar o que poderia dar errado.

Possíveis problemas:

  • nginx é buggy. Pelo menos lighttpd tem bugs FastCGI horríveis, eu não pergunto se nginx tem algum demasiado :)
  • Django está morrendo com um rastreamento em um sistema interno que não está devidamente catched e fecha o servidor fastcgi que você não pode ver a partir do cliente. Nessa situação embrulhar a chamada aplicação de servidor fastcgi e tente / exceto para imprimir a exceção.

Mas log do servidor e configuração seria ótimo.

Respondeu 01/10/2008 em 22:21
fonte usuário

votos
2

FastCGI não é o culpado por isso.

Corri para exatamente o mesmo problema usando nginx / gunicorn. Reduzindo o tamanho da resposta com menos de 32K (no caso específico utilizando a spacelessetiqueta no molde) resolveu.

Como diz dwc, é provavelmente um limite rígido devido à forma como nginx usa espaço de endereço.

Respondeu 17/05/2011 em 16:17
fonte usuário

votos
2

tentar levantar "gzip_buffers" pode ajudar.

veja aqui: http://blog.leetsoft.com/2007/7/25/nginx-gzip-ssl

Respondeu 23/03/2009 em 21:00
fonte usuário

votos
0

Estou correndo configurações muito semelhante a esta tanto no meu serviço de hospedagem (Webfaction) e no servidor dev Ubuntu local e eu não vejo nenhum problema. Eu estou supondo que é um time-out ou tampão completo que está causando isso.

Você pode postar a saída do log de erro nginx? Também qual a versão do nginx você está usando?

Como um lado note que pode valer a pena olhar django-logging para descobrir o que o seu processo fastcgi está fazendo.

Respondeu 23/07/2009 em 17:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more