nginx gzip não funcionou em processadores js e css php

1

Eu tenho um gerenciador de recursos para o processo css e js via php. Eu estou usando nginx e php5-fpm para carregar meu aplicativo. mas retornou arquivos css e js não gziped.

por exemplo, meu URL é http://mysite.com/phpcssprocessor/mycssfile.css este arquivo gera via php.

esta é a minha configuração do host virtual:

# /
    location / {
        # gzip
        gzip on;
        gzip_static on;
        gzip_proxied any;
        gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;

        # disable etag
        if_modified_since off;
        add_header 'Last-Modified' '';

        # mvc rewrite
        try_files $uri $uri/ /index.php?$uri&$args;
    }
    
por sweb 02.01.2013 / 23:14

2 respostas

0

Acabei de acertar o mesmo problema e finalmente resolvi isso.

O problema era que o arquivo style.css.php estava no topo:

header("Content-type: text/css; charset: UTF-8");

E isso impediu que o nginx gzip-ing o arquivo. Aparentemente, "gzip_type text / css" não vai pegar isso por causa da parte "charset".

Eu removi "; charset: UTF-8" do argumento header () e nginx começou a compactar a saída.

header("Content-type: text/css");

Mais tarde adicionei

charset  UTF-8;

no bloco de localização nginx para esse processador CSS, então estou obtendo os cabeçalhos corretos e o gzip está funcionando.

Espero que isso ajude alguém também.

    
por 15.08.2013 / 01:43
1
  1. Seu script php está configurando o cabeçalho de resposta Content-Type: HTTP corretamente? Corresponde às suas opções gzip_types ?

  2. O seu cliente está configurando o cabeçalho da solicitação Accept-Encoding: gzip HTTP corretamente?

  3. Seu http , server ou location do qual php é processado, inclui as diretivas para compactação gzip? Quando um redirecionamento interno ocorre por meio de try_files de / location a php location , a especificação de qualquer tipo de compactação gzip no / location seria a noop - você precisa especificá-lo globalmente ou no último location que conclui a solicitação (locais intermediários não afetam o processamento final).

Sem as três opções acima, você não estará recebendo nenhuma compactação gzip.

No seu caso específico, parece que o try_files redirecionado para outro location está causando o luto, já que vejo que você deve estar especificando material gzip no / location apenas, o que provavelmente é noop. Mova as diretivas do gzip para fora do / location . Você também pode querer afastar suas outras opções de um try_files / location .

    
por 04.01.2013 / 00:32

Tags