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

我目前使用Nginx与NodeJs,我试图编辑我的nginx.conf文件,以允许caching。

以我目前的设置下面我有SSL和GZIP工作,但我怎么能添加caching? 我得到一个错误404.我的文件有以下结构:/ root / Poplive / Dec5 / public

公开我有一个文件(main-built.js)和文件夹(/ javascripts / css),这些是文件和文件夹即时尝试caching。

我试过….

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

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

结果,没有caching,但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/; } } } 

你的正则expression式是不正确的。 我不知道你想要什么,但我仍然可以确认这是不正确的。

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

这是什么错误的。

  • 如果你想/angular色,你应该使用\来逃避它。 所以它看起来像\/
  • 当你写\.(MoreRulesHere) ,这意味着你需要像.main-built.js这样的文件。 但是你不会这样命名你的文件,是吗?
  • $放在最后,你说/javascripts应该是结尾。 也就是说,这是一个文件夹的请求。

我相信你打算写(假设我不能确切地告诉你的意图)。

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

这就是javascripts文件夹和一个名为main-built.js的文件。 因为开头没有^字符,所以没有说明需要从上面开始。 所以,它会匹配/something/else/here/javascripts/foo类的/something/else/here/javascripts/foo