Я пробовал, вручают несколько каталогов в одном месте так, чтобы все файлы могли быть доступом на/sys/assets/-ФАЙЛЕ - независимо от того, где файл, физически располагаются в следующей папке
location /sys {
alias /var/www/website_api/sys/public;
try_files $uri $uri/ /sys/index.php$is_args$args;
location ~ \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
location /sys/assets {
alias /var/www/website_api/sys/app/assets/javascripts/;
}
location /sys/assets {
alias /var/www/website_api/sys/app/assets/stylesheets/;
}
location /sys/assets {
alias /var/www/website_api/sys/app/assets/images/;
}
}
Цель:
/sys/assets/javascriptFile.js
/sys/assets/stylesheetFile.css
/sys/assets/image.png
В вашей конфигурации не может быть повторяющихся местоположений с префиксом. Однако можно сделать то, что вы ожидаете, используя директиву try_files
:
location /sys {
alias /var/www/website_api/sys/public;
try_files $uri $uri/ /sys/index.php$is_args$args;
location ~ \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
location ~ ^/sys/assets/?(.*)$ {
root /var/www/website_api/sys/app/assets;
try_files /javascripts/$1 /stylesheets/$1 /assets/images/$1;
}
}
Если вам абсолютно необходимо избавиться от несоответствующих операций поиска в файловой системе (например, вызовов ядра stat ()
в Linux), вы можете также сделайте это более точно, используя несколько местоположений регулярных выражений, соответствующих подходящим расширениям файлов:
location /sys {
alias /var/www/website_api/sys/public;
try_files $uri $uri/ /sys/index.php$is_args$args;
location ~ \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
location ~ ^/sys/assets/?.*\.css$ {
rewrite '^/sys/assets/(.*)$' '/$1' break;
root /var/www/website_api/sys/app/assets/stylesheets;
}
location ~ ^/sys/assets/?.*\.(gif|ico|jpe?g|png|svg)$ {
rewrite '^/sys/assets/(.*)$' '/$1' break;
root /var/www/website_api/sys/app/assets/images;
}
location ~ ^/sys/assets/?.*\.js$ {
rewrite '^/sys/assets/(.*)$' '/$1' break;
root /var/www/website_api/sys/app/assets/javascripts;
}
}
Если вам нужно обслуживать файлы из нескольких разных корней, попробуйте использовать именованные местоположения.
location / {
root "E:\Directory1";
try_files $uri $uri/ @dir2;
index index.php;
autoindex on;
}
location @dir2 {
root "F:\Directory2";
index index.php;
try_files $uri $uri/ =404;
}
Установите автоиндекс для первого и 404 для последнего (как показано). Должен иметь возможность связать столько, сколько захотите. Вы также можете сделать то же самое для своего местоположения .php
.