Nginx subdiretório Drupal + outro aplicativo

2

Eu tenho um aplicativo drupal e dois outros aplicativos escritos em php, eu quero usar uma reescrita uri para drupal e colocar drupal na raiz virtual / e o outro por seus nomes ... e usar o cache do servidor para a img de cada app.

ex:

  • xxx.com ou xxx.com/ - > /var/www/xxx.com/drupal /
  • xxx.com/app1 ou xxx.com/app1/ ---- > /var/www/xxx.com/app1 /
  • xxx.com/app2 ou xxx.com/app2/ ---- > /var/www/xxx.com/app2 /

Eu testei: alias, raiz em cada local, $ request_uri condicional, configuração separada ... e sempre um erro: caminho img, caminho php, 404 para um dos aplicativos ou drupal

então estou realmente perdido ...

aqui um teste (talvez algumas coisas boas):

    # 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 :)
    
por Gilles Grandguillaume 27.06.2012 / 01:50

1 resposta

1

As diretivas de localização são verificadas em uma ordem predefinida ( link ). No seu caso, a expressão regular para arquivos PHP é o gerenciamento de cache anc são considerados primeiro, depois o / location e (se / não devem corresponder) as diretivas / app1 / e / app2 /. Como root sempre corresponderá, / app1 / nunca é verificado.

A solução é simples: coloque o / app1 / e / app2 / antes da diretiva / -location e recarregue a configuração nginx.

BurninLeo

    
por 29.07.2013 / 14:24