Поймать JS | css в nginx расположение регулярное выражение - PullRequest
0 голосов
/ 02 февраля 2020

Кто-нибудь, пожалуйста, объясните мне - зачем запрашивать этот URL - http://localhost/static/css/style.css return 404 ?

Вот часть моего nginx .conf

location ~ /static/(?<doctype>[js|css]+) {

  # root /usr/src/app/public/;

  if ($doctype = "css") {
    set $contnt_type "text/css";
  }
  if ($doctype = "js") {
    set $contnt_type "text/javascript";
  }

  expires 30d;
  add_header X_Cached 1;
  access_log off;

  add_header Cache-Control "public";
  add_header  Content-Type   $contnt_type;

   return 200  "$doctype";
}

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Вещи менее сложны, чем вы хотите, чтобы они были. Изменение Content-Type на основе расширения файла - тривиальная задача в NGINX, и вам не нужно выделенное место для этого.

Просто отредактируйте /etc/nginx/mime.types с желаемым значением заголовка Content-Type в зависимости от расширения файла, например:

types {
    text/html       html htm shtml;
    text/css        css;
    text/javascript js;     
    ...
}

Нет необходимости говорить, что редактирование этого файла приведет к значениям Content-Type, указанным для всей установки NGINX. Что хорошо, в большинстве случаев.

Если вы действительно хотите изменить Content-Type в конкретном c месте (что я действительно не понимаю, почему, но ставить его для полнота), вы также можете сделать это, например, так (при условии, что вы знаете все возможные типы файлов в данном месте):

location /static/ {
  types { 
     text/css css;
     text/javascript js; 
     # be sure to add any extra file types you have below:
     # ...
  }   

  expires 30d;
  add_header X_Cached 1;
  access_log off;

  add_header Cache-Control "public";
}
1 голос
/ 02 февраля 2020

Лучше использовать блок map вместо if конструкции, если это зло !

map $doctype $contnt_type {
    js    "text/javascript";
    css   "text/css";
}

server
    ...
    location ~ ^/static/(?<doctype>js|css)/ {
        expires 30d;
        add_header X-Cached 1;
        access_log off;
        add_header Cache-Control "public";
        add_header Content-Type  $contnt_type;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...