Como usar o Nginx Gzip, Cache e SSL ao mesmo tempo?

2

Atualmente estou usando o Nginx com o NodeJs e estou tentando editar meu arquivo nginx.conf para permitir o armazenamento em cache.

Com minha configuração atual abaixo, tenho SSL e GZIP funcionando, mas como posso adicionar o cache? Eu recebo um erro 404. Meus arquivos têm a seguinte estrutura: / root / Poplive / Dec5 / public

Em público eu tenho um arquivo (main-built.js) e as pastas (/ javascripts | / css), estes são os arquivos e pastas que estou tentando armazenar em cache.

O que eu tentei ....

1) Coloquei a diretiva abaixo dentro do local / {} no meu nginx.conf abaixo

location ~* /.*\.(/javascripts|main-built.js)$ {
expires 24h;
}

Resultado, sem cache, mas o GZIP funciona

Nginx.conf abaixo

events { worker_connections 1024; }
http {

    upstream myapp {
        server 127.0.0.1:3100;
    }

#Add Gzip
    sendfile        on;
    keepalive_timeout   2;
    tcp_nodelay        on;
    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 5;
    gzip_proxied any;
    gzip_types text/plain text/css application/json json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    server {
        root /Poplive/Dec5/public;

        ssl_certificate /root/Poplive/Dec5/server.crt;
        ssl_certificate_key /root/Poplive/Dec5/server.key;

        listen 80;
        listen 443 ssl;
  if ($ssl_protocol = "") {
    rewrite ^ https://$host$request_uri? permanent;
  }
        server_name poplive.co;





           location / {

 location ~* /.*\.(/javascripts|main-built.js)$ {
    expires 24h;
    }

proxy_set_header X-FORWARDED-PROTO https;
            proxy_pass http://myapp/;

     }

    }
}
    
por 1ManStartup 02.02.2014 / 09:17

1 resposta

1

Seu regex está incorreto. Não sei exatamente o que você quer, mas ainda posso confirmar que está incorreto.

location ~* /.*\.(/javascripts|main-built.js)$ {

Veja o que há de errado nisso.

  • Se você quiser o caractere / , deverá escapar usando \ . então parece que \/
  • Quando você escreveu \.(MoreRulesHere) , isso significava que você deseja arquivos como .main-built.js . Mas você não vai nomear seus arquivos assim, está?
  • Colocando $ no final, você afirmou que /javascripts deve ser o final. Isto é, é um pedido de uma pasta.

Eu acredito que você quisesse escrever (presumindo que eu não posso dizer exatamente a sua intenção).

location ~* \/(javascripts\/.*|main-built.js)$ {

Isso é tudo na pasta javascripts e em um arquivo chamado main-built.js . Como não há nenhum caractere ^ no início, ele não declara que é necessário começar com o acima. Então, ele vai combinar coisas como /something/else/here/javascripts/foo também.

    
por 02.02.2014 / 11:16

Tags