Depois de dois gastos todos os dias sobre isso. Eu finalmente encontrei uma solução totalmente funcional:
- Primeiro, você precisa alterar o
location /
(Catch all) para que não tente buscar subdiretórios - Em seguida, você precisa criar um
location /subfolder_name/
para cada aplicativo que deseja veicular - Finalmente, você precisa configurar o local do drupal e uma reconfiguração para que ele capture as solicitações de
/drupal_subfolder/
e as reescreva para o roteador do Drupal.
Então aqui está o código:
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;
}
Na minha configuração (acima), apenas os blocos location /app/
e location /site/
têm conteúdo.
Espero que ajude alguém. :)
(eu usei: ubuntu + nginx + drupal 8.2)