У меня есть похожие структуры проектов и каталоги почти во всех приложениях 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;
}