在 nginx 上与 Passenger 一起运行 Roundcube

在 nginx 上与 Passenger 一起运行 Roundcube

我最近尝试在 nginx 上安装 Passenger。安装成功,一切正常。不过,我也想在我的服务器上运行 roundcube webmail。

基本上我的问题是 nginx 将根指令设置为乘客应用程序:

root /home/me/www/hello/public

并且 roundcube 在服务器上创建为符号链接:

/home/me/www/webmail

我的问题是,如何让 URL www.my-server.com 引用普通根目录,但让 www.my-server.com/webmail 引用 roundcube 文件夹?

我尝试过在 nginx.conf 中进行以下修改,但没有成功:

location /webmail/ {
    #root /home/me/www;
    alias /home/me/www;
    try_files $uri /index.php;
    passenger_enabled off;
}

上述配置导致使用 www.my-server.com/webmail 时出现 403 禁止,使用 URI:www.my-server.com/webmail/index.php 时出现文件未找到。

有任何想法吗?

答案1

这有点棘手,但我找到了解决方案nginx 文档中有关 location 的内容

由于有一个与 .php 文件匹配的位置指令,它将优先于 /webmail/ 位置,并且由于这没有声明根位置,因此将使用全局根,它仍然指向乘客文件夹。

解决方案是向 php 匹配位置添加一个 root 指令,并将 php 执行限制在 webmail 路径下,如下所示:

index index.html index.htm index.php

location /webmail/ {
    root /home/me/www;
}

location ~ /webmail/.*\.php$ {
    root /home/me/www;
    ...
}

现在一切正常。

相关内容