如何同时使用Nginx Gzip,缓存和SSL?


2

我当前正在将Nginx与NodeJs一起使用,并且试图编辑nginx.conf文件以允许缓存。

在下面的当前设置下,我可以使用SSL和GZIP,但是如何添加缓存?我收到错误404。我的文件具有以下结构:/ root / Poplive / Dec5 / public

在公共场合,我有一个文件(main-built.js)和文件夹(/ javascripts | / css),这些是我尝试缓存的文件和文件夹。

我试过了...

1)我将指令放在下面的nginx.conf中的位置/ {}下

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

结果,没有缓存,但是GZIP可以工作

下面的Nginx.conf

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/;

     }

    }
}

Answers:


1

您的正则表达式不正确。我不知道您到底要什么,但是我仍然可以确认它是不正确的。

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

这是怎么回事。

  • 如果您想使用/字符,则应使用进行转义\。所以看起来\/
  • 在编写时\.(MoreRulesHere),这意味着您需要类似的文件.main-built.js。但是您不会像那样命名文件,是吗?
  • 通过将$在年底,你说/javascripts应该是结局。也就是说,这是文件夹的请求。

我相信您打算写(假设因为我不能确切地说出您的意图)。

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

那就是javascripts文件夹和名为的文件中的所有内容main-built.js。因为^开头没有字符,所以它没有说明它需要从上面开始。因此,它也会匹配类似的东西/something/else/here/javascripts/foo


感谢您的回复。我试图缓存main-built.js和javascripts文件夹文件。首先将它们作为Gzip加载,同时进行缓存。问题是我不确定在哪里放置正则表达式。
1ManStartup 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.