Назад | Перейти на главную страницу

nginx - предоставлять статический контент из общедоступного каталога в каждом приложении

У меня есть похожие структуры проектов и каталоги почти во всех приложениях nodejs, которые я перенаправляю через nginx. Структура следующая:

/var/srv
-/app1
 -/public
  -/css
  -/js
  -/img
-/app2
 -/public
  -/css
  -/js
  -/img
-/app3
 -/public
  ......

надеюсь, вы уловили идею. На данный момент я жестко запрограммировал обслуживание кода статических файлов в nginx, указав местоположение и псевдоним для каждого проекта, но мне нужно что-то вроде этого:

location /$app_var/public/(js or css or img or other static content) {

затем псевдоним как

alias /var/srv/$app_var/public/(js or css or img or other static content)

так что он обслуживает статический контент на основе каталога проекта, и мне не нужно вручную указывать каждое местоположение проекта. пожалуйста, прокомментируйте, если я не объяснил это лучше. Спасибо :)

Моя текущая конфигурация:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /srv/www/;
        index index.html index.htm;

        server_name example.com www.example.com;


   rewrite ^/(.*) https://nulll.me/$1 permanent;
}

server {
        listen 443;
        server_name example.com example.com;

        root /srv/www/;
        index index.html index.htm;

        ssl on;
        ssl_certificate /home/---------------.crt;
        ssl_certificate_key /home/------------.key;

        ssl_session_timeout 5m;

        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;

        location / {
                try_files $uri $uri/ =404;
        }

        location /app1 {
        alias /srv/www/watch/;
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
    #simillarly more apps

     location /app1/public/img {
         alias /srv/www/app1/img/;
         access_log off;
         expires max;
     }
     # simillarly for /css , /js and for each website.

}

Использовать регулярное выражение?

Что-то вроде этого должно получиться:

location ~ ^/(?<app>[^/]+)/public/(?<dir>[^/]+)/(?<file>[^/]+)$ {
    alias /var/srv/$app/public/$dir/$file;
}