Nginx 子目录 Drupal + 其他应用程序

Nginx 子目录 Drupal + 其他应用程序

我有一个 drupal 应用程序和另外两个用 php 编写的应用程序,我想为 drupal 使用重写 uri,并将 drupal 放在虚拟根目录 / 中,将另一个放在它们的名称中...并使用服务器缓存来存储每个应用程序的 img。

前任 :

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

我已经测试过:别名、每个位置的根、条件 $request_uri、单独的配置...并且始终出现一个错误:img 路径、php 路径、所有应用程序或 drupal 之一的 404

所以我真的迷路了......

这里有一个测试(可能有一些好事):

    # 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 :)

答案1

按照预定义的顺序检查位置指令(http://wiki.nginx.org/HttpCoreModule#location)。对于您的情况,PHP 文件的正则表达式是 anc 缓存管理,首先考虑,然后是 / 位置和(如果 / 不匹配)/app1/ 和 /app2/ 指令。由于 root 始终匹配,因此永远不会检查 /app1/。

解决方案很简单:将 /app1/ 和 /app2/ 放在 /-location 指令之前,然后重新加载 nginx 配置。

燃烧的利奥

相关内容