AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 402552
Accepted
Gilles Grandguillaume
Gilles Grandguillaume
Asked: 2012-06-27 15:50:19 +0800 CST2012-06-27 15:50:19 +0800 CST 2012-06-27 15:50:19 +0800 CST

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

  • 772

我有一个 drupal 应用程序和 2 个用 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/

我已经测试过:别名、每个位置的 root、条件 $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 :)
php drupal nginx
  • 1 1 个回答
  • 2438 Views

1 个回答

  • Voted
  1. Best Answer
    BurninLeo
    2013-07-30T04:24:59+08:002013-07-30T04:24:59+08:00

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

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

    燃烧狮子座

    • 1

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve