В настоящее время я использую Nginx с NodeJs, и я пытаюсь отредактировать файл nginx.conf, чтобы разрешить кеширование.
С моей текущей настройкой ниже у меня работают SSL и GZIP, но как я могу добавить кеширование? Я получаю ошибку 404. Мои файлы имеют следующую структуру: / root / Poplive / Dec5 / public
В публичном доступе у меня есть файл (main-built.js) и папки (/ javascripts | / css), это файлы и папки, которые я пытаюсь кэшировать.
Что пробовал ....
1) Я поместил указанную ниже директиву внутри location / {} в свой 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/;
}
}
}
Ваше регулярное выражение неверно. Я не знаю, что именно вы хотите, но могу подтвердить, что это неверно.
location ~* /.*\.(/javascripts|main-built.js)$ {
Вот что в этом плохого.
/
персонаж, вы должны избежать его, используя \
. так это похоже \/
\.(MoreRulesHere)
, это означало, что вам нужны такие файлы, как .main-built.js
. Но ведь вы же не собираетесь так называть свои файлы?$
в конце вы заявили, что /javascripts
должен быть финал. То есть это запрос папки.Я считаю, что вы хотели написать (при условии, что я не могу точно сказать о ваших намерениях).
location ~* \/(javascripts\/.*|main-built.js)$ {
Это все в javascripts
папка и файл с именем main-built.js
. Потому что нет ^
символ в начале, это не означает, что он должен начинаться с указанного выше. Итак, он будет соответствовать таким вещам, как /something/else/here/javascripts/foo
также.