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.

}
0
задан 29 March 2015 в 19:35
1 ответ

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

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

location ~ ^/(?<app>[^/]+)/public/(?<dir>[^/]+)/(?<file>[^/]+)$ {
    alias /var/srv/$app/public/$dir/$file;
}
2
ответ дан 4 December 2019 в 13:51

Теги

Похожие вопросы