O Apache não exibirá imagens maiores que ~ 2K

5

Atualizei uma caixa antiga para o Ubuntu 10.04.2 LTS. O Apache não exibirá imagens em um navegador com mais de 2K. Pequenas imagens parecem exibir bem. HTML estático e PHP continua a funcionar bem também.

Instalado:

apache2                                   2.2.14-5ubuntu8.4
apache2-mpm-prefork                       2.2.14-5ubuntu8.4
apache2-utils                             2.2.14-5ubuntu8.4
apache2.2-bin                             2.2.14-5ubuntu8.4
apache2.2-common                          2.2.14-5ubuntu8.4

aqui está um ngrep de uma imagem que não é exibida corretamente no navegador:

T 192.168.0.4:32907 -> 192.168.0.54:80 [AP]
  GET /path/path/logo.png HTTP/1.1..Host: 192.1
  68.0.54..Connection: keep-alive..Accept: application/xml,application/xhtml+
  xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5..User-Ag
  ent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13
   (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13..Accept-Enco
  ding: gzip,deflate,sdch..Accept-Language: en-US,en;q=0.8..Accept-
  Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3....                      

T 192.168.0.54:80 -> 192.168.0.4:32907 [A]
  HTTP/1.1 200 OK..Date: Wed, 09 Mar 2011 05:28:38 GMT..Server: Apa
  che/2.2.14 (Ubuntu)..Last-Modified: Tue, 05 Oct 2010 11:59:17 GMT
  ..ETag: "17b6f4-15fe-491dd63eb2f40"..Accept-Ranges: bytes..Conten
  t-Length: 5630..Keep-Alive: timeout=15, max=100..Connection: Keep
  -Alive..Content-Type: image/png.....PNG........IHDR...!...v......
  .%.....sRGB.........bKGD..............pHYs.................tIME..
  etc...

Isso parece ok para mim!

Eu testei o firefox e o chrome, ambos exibem imagens pequenas, mas quando uma imagem grande é solicitada, o navegador solicita o download do arquivo.

Quando o arquivo de imagem é salvo no computador local, ele está corrompido. Além disso, leva muito tempo para ser salvo, o que me faz pensar que o navegador não consegue ver o cabeçalho de tamanho do conteúdo enviado do apache. Além disso, quando olho para o arquivo de imagem salvo, ele inclui os cabeçalhos do apache, junto com um pouco de lixo no topo, assim:

vi logo.png:

^@^UÅd^@$^]V^S^H^@E^@^Q,n!@^@@^F^@^@À¨^@6À¨^@^D^@P^Y¬rÇŹéw^P^@Ú^@^@^A^A^H
^@^GÝ^]^@pbSHTTP/1.1 200 OK^M
Date: Wed, 09 Mar 2011 04:47:04 GMT^M
Server: Apache/2.2.14 (Ubuntu)^M
Last-Modified: Tue, 05 Oct 2010 11:59:17 GMT^M
ETag: "17b6ff-157c-491dd63eb2f40"^M
Accept-Ranges: bytes^M
Content-Length: 5500^M
Keep-Alive: timeout=15, max=94^M
Connection: Keep-Alive^M
Content-Type: image/png^M
^M
PNG^M
etc...

Alguma ideia? Está me deixando louca.

Não há nada nos logs de erro do apache, e as permissões estão bem (porque os dados da imagem estão lá, são apenas um pouco corrompidos).

Não há proxy ou iptables nesta caixa do Ubuntu.

Vale a pena !!

Dave

ps: tentei no IE de um computador diferente, mesmo problema :( pps: reiniciou o servidor, não ajuda.

Atualização:

Obrigado por essas ideias do wget:

aqui está a saída do wget de uma máquina remota (não foi possível ler os cabeçalhos)

dbaker@fatburt:~$ wget http://foo/static/images2/nav_sprite.jpg
--2011-03-10 17:41:06--  http://foo/static/images2/nav_sprite.jpg
Resolving foo... 192.168.0.54
Connecting to foo|192.168.0.54|:80... connected.
HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
Length: unspecified
Saving to: 'nav_sprite.jpg'

aqui está a saída do wget do servidor local de volta para si mesmo (funciona bem)

wget http://foo/static/images2/nav_sprite.jpg
--2011-03-10 17:44:51--  http://foo/static/images2/nav_sprite.jpg
Resolving foo... 192.168.0.54
Connecting to foo|192.168.0.54|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 79192 (77K) [image/jpeg]
Saving to: 'nav_sprite.jpg'

Atualização:

obrigado @uesp adicionando "EnableMMAP off" ao /etc/apache2/httpd.conf e reiniciando o apache corrigindo-o, não sei por quê, mas aconteceu.

aplausos!

    
por dtbaker 09.03.2011 / 06:53

2 respostas

5

Algumas coisas que você pode tentar:

  • Tente definir EnableSendfile off na configuração do Apache e reinicie (consulte documentação principal do Apache ). Experimente também EnableMMAP off (consulte aqui para ver questão muito semelhante ao seu).
  • Ao testar com um navegador, verifique se o cache está limpo e / ou force a imagem a ser recarregada.
  • Teste com vários tipos e tamanhos de arquivo. São apenas arquivos PNG, todas as imagens, etc ...? Estreitando em que tamanho de imagem funciona e o que não pode ajudar no final.
  • Tente testar outro servidor da Web (lighttpd, nginx, ...) e veja se eles exibem o mesmo comportamento. Isso deve informar se o problema é específico do Apache ou algo no próprio servidor / rede.
  • Faça o download de arquivos remotamente e localmente e veja se a resposta é diferente.
por 09.03.2011 / 14:32
1

Esse problema não é baseado em navegador. Você enfrentará esse problema independentemente do navegador usado. O arquivo está corrompido porque não está baixando completamente. Você pode verificar isso fazendo o download via scp ou ftp transfer (o que você deve fazer para verificar se não está de fato corrompido).

Tente um wget para o arquivo específico. Isso permitirá que você se concentre diretamente no download do arquivo, em vez de lidar com quaisquer problemas de php ou html que possam ter surgido.

 wget http://your.website.com/path/to/image.png

Além disso, tente isso com um arquivo gif e jpg para que você possa ter certeza de que talvez não seja apenas algo com o png e a atualização.

Outra coisa para ver seria seguir seus registros:

 # tail -f /path/to/apache/logs

Dessa forma, você pode ter um segundo terminal aberto e observar os resultados em tempo real enquanto tenta acessar as imagens.

Se você não chegar a lugar algum com isso (ou esperamos que você rastreie o problema até o apache e não com as imagens), desinstale e reinstale o apache.

    
por 09.03.2011 / 13:16

Tags