У меня есть приложение drupal и 2 других приложения, написанные на php, я хочу использовать перезапись uri для drupal и поместить drupal в виртуальный корень /, а другой - по их именам ... и использовать кеш сервера для img каждого приложения.
пример:
Я тестировал: псевдоним, root в каждом месте, условный $ request_uri, отдельную конфигурацию ... и всегда одну ошибку: путь img, путь php, 404 для одного из всех приложений или drupal
так что я действительно потерялся ...
вот тест (может быть, хорошие вещи):
# enforce www
if ($host !~* ^(www)) {
rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
}
location / {
root /var/www/gplaza.cl/Drupal;
index index.php index.html;
if (!-f $request_filename) {
rewrite ^(.*)$ /index.php?q=$1 last;
break;
}
if (!-d $request_filename) {
rewrite ^(.*)$ /index.php?q=$1 last;
break;
}
}
location /app1/ {
alias /var/www/gplaza.cl/app1/;
index index.php;
}
location /app2/ {
alias /var/www/gplaza.cl/app2/;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/xxx.com$fastcgi_script_name;
}
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
set $static_content /var/www/xxx.com/Drupal;
if ($request_uri ~ ^/app1) {
set $static_content /var/www/xxx.com/app1;
}
if ($request_uri ~ ^/app2) {
set $static_content /var/www/gplaza.cl/app2;
}
expires 30d;
access_log off;
root $static_content;
}
thank a lot if anybody can help me :)
Директивы местоположения проверяются в предопределенном порядке (http://wiki.nginx.org/HttpCoreModule#location). В вашем случае регулярное выражение для файлов PHP - это сначала управление кешем, затем / location и (если / не должно совпадать) директивы / app1 / и / app2 /. Поскольку root всегда соответствует, / app1 / никогда не проверяется.
Решение простое: поместите / app1 / и / app2 / перед директивой / -location и перезагрузите конфигурацию nginx.
BurninLeo