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

Подкаталог Nginx Drupal + другое приложение

У меня есть приложение 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