Назад | Перейти на главную страницу

NGINX + Drupal установлен во вложенной папке на сервере Linux

Я пытаюсь настроить сервер так, чтобы у него были следующие доступные адреса:

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 / (Поймать все), чтобы не пытаться получить подкаталоги
  2. Затем вам нужно создать location /subfolder_name/ для каждого приложения, которое вы хотите обслуживать
  3. Наконец, вам нужно настроить расположение 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)