locatiedesubdirectory nginx met herschreven drupal

Ik heb deze configuratie van nginx:

server {
    listen       80;
    server_name  example.com www.example.com;

    location =/{
            root /var/www/example.com;
            index index.php;
    }

    location/{
            root   /var/www/example.com/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 ~ \.php$ {

            set $php_root /var/www/example.com/Drupal;

            if ($request_uri ~ ^/MassMail) {
                    set $php_root /var/www/example.com/MassMail;
            }

            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include /etc/nginx/fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name;

    }

Ik heb 2 apps in php:

  • de eerste in /var/www/example.com/MassMail
  • de tweede in /var/www/example.com/Drupal (een Drupal-blog)

mijn server dient gelijk de twee URL

example.com/ --> Drupal blog

example.com/MassMail --> other app

maar het dient niet de afbeelding of de JavaScript ... (fout 404)

for serve img etc, ik heb zoiets getest (bijvoorbeeld ...):

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
           expires         30d;
            access_log      off;
    }

misschien ontbreekt er een root directory voor, maar welke?

0

1 antwoord

Je PHP denkt dat MassMail is geïnstalleerd in de/(root), probeer een tweede locatie toe te voegen voor staitc-bestanden:

location ~* ^/MassMail.+.(jpg|jpeg|gif|css|png|js|ico)$ {
           expires         30d;
            access_log      off;
           root /var/www/xxx.com/MassMail;
}

Configuratie # 2

location ~* ^/(.*)/.+.(jpg|jpeg|gif|css|png|js|ico)$ {
  expires         30d;
     access_log      off;
   root /var/www/xxx.com/$1;
}

Configuratie # 3

Plaats elke app-configuratie in een speciaal bestand (bijvoorbeeld voor MassMail):

applications/massmail.conf:

  location ~ \.php$ {

            set $php_root /var/www/xxx.com/Drupal;

            if ($request_uri ~ ^/MassMail) {
                    set $php_root /var/www/xxx.com/MassMail;
            }

   location ~* ^/MassMail.+.(jpg|jpeg|gif|css|png|js|ico)$ {
           expires         30d;
            access_log      off;
           root /var/www/xxx.com/MassMail;
   }

nginx.conf:

.....
include applications/massmail.conf;
0
toegevoegd
Nou eigenlijk kun je de tweede configuratie goed implementeren, maar het is geen goede gewoonte. De betere manier is om voor elk speciaal bestand van de toepassing met config te gebruiken (zie voorbeeld # 3)
toegevoegd de auteur Sergei Lomakov, de bron
bedankt Sergei! eigenlijk ja het werkt ... maar ik heb 2 locaties met statische inhoud voor 2 apps ... als ik 75 apps heb? 75 locaties met statische inhoud ?? er is geen generieke manier voor dit spul ??
toegevoegd de auteur Gilles Grandguillaume, de bron
bedankt voor alles :)
toegevoegd de auteur Gilles Grandguillaume, de bron