Apache truncando algum conteúdo estático

1

Estou tentando configurar o MoinMoin como um wiki de escritório no nosso Windows 2008 Server executando o Apache 2.2.17. Originalmente, achei que tudo estava funcionando bem, exceto por algum motivo que as imagens não estavam sendo exibidas corretamente. Como se constata, todo o meu conteúdo veiculado estaticamente estava ficando truncado (até 800 caracteres) e estou tentando descobrir o motivo.

O log de erros não mostra nada, e o log de acesso informa que os arquivos foram entregues 200 OK ou 304 Inalterados.

Todo o conteúdo dinâmico parece exibir OK e não-truncado, e eu tenho uma instalação do Django no mesmo servidor que também está funcionando normalmente.

O que pode estar causando esse comportamento estranho? Um pouco de matemática, que eu acho que aponta para um problema de codificação - para todos os arquivos de texto, o número de caracteres ausentes é igual ao número de caracteres de nova linha na versão truncada do arquivo. Mudar a codificação no arquivo em si não parece ajudar, mas se eu colocar todo o conteúdo em uma linha, tudo ficará bem. Embora isso pareça contornar o problema, alterar todos os arquivos seria um pouco irritante, e não consegui adivinhar como fazer isso com uma imagem.

Addendum : Aqui está o que eu vejo no cliente usando a função de fluxo TCP do Wireshark. A principal coisa que noto é que o conteúdo dinâmico (/ bgcwiki) tem um número de novas linhas seguidas por 0, enquanto o conteúdo estático nem sempre tem uma nova linha. Em particular, o .png não possui nenhum espaço em branco entre o final de seu conteúdo e a próxima solicitação GET.

GET /bgcwiki HTTP/1.1
Host: msdc2
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: sessionid=6e2eaf00d5f8f22b576ed232d4f2fafb; csrftoken=8eb6a8ed71814c2c037532ed51cc2f81; MOIN_SESSION_80_ROOT_bgcwiki=95631c8ede11697138a37901afe53fc38b412812

HTTP/1.1 404 NOT FOUND
Date: Thu, 12 Jan 2012 15:04:39 GMT
Server: Apache
Vary: Cookie,User-Agent,Accept-Language
Set-Cookie: MOIN_SESSION_80_ROOT_bgcwiki=95631c8ede11697138a37901afe53fc38b412812; expires=Sun, 09-Jan-2022 15:04:00 GMT; Max-Age=315360000; Path=/
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8

1386
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="edit_on_doubleclick" content="/bgcwiki">
<meta name="robots" content="index,nofollow">

<title>bgcwiki - Boys &amp; Girls Club of Thunder Bay</title>
<script type="text/javascript" src="/bgcwiki/moin_static193/common/js/common.js"></script>

<!-- snip -->

14
</body>
</html>


0

GET /bgcwiki/moin_static193/common/js/common.js HTTP/1.1
Host: msdc2
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
Accept: */*
Referer: http://msdc2/bgcwiki
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: sessionid=6e2eaf00d5f8f22b576ed232d4f2fafb; csrftoken=8eb6a8ed71814c2c037532ed51cc2f81; MOIN_SESSION_80_ROOT_bgcwiki=95631c8ede11697138a37901afe53fc38b412812

HTTP/1.1 200 OK
Date: Thu, 12 Jan 2012 15:04:40 GMT
Server: Apache
Etag: "wzsdm-1326330976-29032-305726357"
Cache-Control: max-age=43200, public
Expires: Fri, 13 Jan 2012 03:04:40 GMT
Content-Length: 29032
Last-Modified: Wed, 11 Jan 2012 20:16:16 GMT
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: application/x-javascript

//
// MoinMoin commonly used JavaScript functions
//

/* snip */

runASAP(runScrollTextareaInitOnce);
// ensure init will be run by obsolete browsers
addLoadEvent(runScrollTextareaInitOnce);
GET /bgcwiki/moin_static193/smallbgclogo.png HTTP/1.1
Host: msdc2
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
Accept: */*
Referer: http://msdc2/bgcwiki
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: sessionid=6e2eaf00d5f8f22b576ed232d4f2fafb; csrftoken=8eb6a8ed71814c2c037532ed51cc2f81; MOIN_SESSION_80_ROOT_bgcwiki=95631c8ede11697138a37901afe53fc38b412812

HTTP/1.1 200 OK
Date: Thu, 12 Jan 2012 15:04:40 GMT
Server: Apache
Etag: "wzsdm-1326230173-7814-930940522"
Cache-Control: max-age=43200, public
Expires: Fri, 13 Jan 2012 03:04:40 GMT
Content-Length: 7814
Last-Modified: Tue, 10 Jan 2012 16:16:13 GMT
Keep-Alive: timeout=5, max=97
Connection: Keep-Alive
Content-Type: image/png

.PNG

...
IHDR.......Z.............sRGB.........bKGD..............pHYs.................tIME...
..

/* snip */

...(Fg.1......(F1.Q.b....(F1.Q.b.......P.Yg[XB.....IEND.B'.GET /bgcwiki/moin_static193/modern/css/print.css HTTP/1.1
Host: msdc2
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
Accept: text/css,*/*;q=0.1
Referer: http://msdc2/bgcwiki
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: sessionid=6e2eaf00d5f8f22b576ed232d4f2fafb; csrftoken=8eb6a8ed71814c2c037532ed51cc2f81; MOIN_SESSION_80_ROOT_bgcwiki=95631c8ede11697138a37901afe53fc38b412812

HTTP/1.1 200 OK
Date: Thu, 12 Jan 2012 15:04:41 GMT
Server: Apache
Etag: "wzsdm-1277603206-811-309986213"
Cache-Control: max-age=43200, public
Expires: Fri, 13 Jan 2012 03:04:41 GMT
Content-Length: 811
Last-Modified: Sat, 26 Jun 2010 21:46:46 GMT
Keep-Alive: timeout=5, max=96
Connection: Keep-Alive
Content-Type: text/css

/*  print.css - MoinMoin Default Styles
Copyright (c) 2001, 2002, 2003 by Juergen Hermann
*/

/* snip */

#header, #sidebar, #footer, #timings, #credits, #interwiki, #pagelocation {
    display: none;
}

O arquivo de configuração do Apache para o MoinMoin (bem padrão?):

Alias /moin_static160/ "C:/Djangostack/python/Lib/site-packages/MoinMoin/web/static/htdocs/"
ScriptAlias /bgcwiki "C:/Djangostack/Moin/bgcwiki/moin.cgi"

<Directory 'C:/Djangostack/Moin/bgcwiki/' >
  Order allow,deny
  Allow from all
</Directory>
<Directory 'C:/Djangostack/python/Lib/site-packages/MoinMoin/web/static/htdocs/' >
  Order allow,deny
  Allow from all
</Directory>
    
por Hannele 10.01.2012 / 22:44

2 respostas

1

Na verdade, foi um problema de codificação e um problema de configuração com o MoinMoin, em vez do Apache.

O problema foi com o arquivo de configuração , não com qualquer um dos arquivos estáticos. Eu suspeito que, devido à edição de um arquivo originalmente baseado em Unix em uma máquina Windows, a codificação não era consistente em todo o arquivo. Meu editor nem disse qual era a codificação!

Depois que eu converti todo o arquivo de configuração para Unicode (ou, para qualquer coisa consistente, realmente), tudo começou a funcionar. Embora, como isso criou esse problema específico está um pouco além de mim.

    
por 13.01.2012 / 17:59
1

Tente desativar EnableSendfile e EnableMMAP se você vir arquivos estáticos truncados.

    
por 12.01.2012 / 03:27