![NGINX + Drupal 安装在 Linux 服务器的子文件夹中](https://linux22.com/image/696872/NGINX%20%2B%20Drupal%20%E5%AE%89%E8%A3%85%E5%9C%A8%20Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD.png)
我正在尝试配置服务器,使其具有以下可访问的地址:
domain.com/webmail (webmail app)
domain.com/app (node.js app)
domain.com/mailadmin (mail administration app)
domain.com/site (drupal website)
我的根目录是/var/www
其中有以下目录:
/var/www/webmail
/var/www/app
/var/www/postfixadmin
/var/www/site
我尝试了几种配置,但都不起作用(有些配置只起作用,显示主页或显示所有页面,但没有任何 CSS 样式)
干杯
答案1
经过两天的折腾,我终于找到了一个完全可行的解决方案:
- 首先,您需要更改
location /
(全部捕获),以便它不会尝试获取子目录 - 然后你需要
location /subfolder_name/
为每个你想要服务的应用程序创建一个 - 最后,您需要配置 drupal 位置和重写,以便它捕获请求
/drupal_subfolder/
并为 Drupal 路由器重写它。
以下是代码:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri =404;
}
location /app/ {
// reverse proxy configuration of a node.js app
...
}
location /webmail/ {
}
location /mailadmin/ {
}
location @drupal_rewrite {
rewrite ^/site/(.*)$ /site/index.php?$1;
}
location /site/ {
try_files $uri @drupal_rewrite;
}
在我的配置(上文)中,只有location /app/
和location /site/
块有内容。
希望它能对某人有所帮助。:)
(我使用的是:ubuntu + nginx + drupal 8.2)