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

Множественный корень документов с nginx

Мне нужно настроить nginx, чтобы он обслуживал другое программное обеспечение из другого корня документа в подкаталоге домена следующим образом:

http://example.com/... - main site from /var/www/main
http://example.com/docs/ - an independent application from /var/www/app

Я пробовал много способов, включая proxy_pass и alias, но ни один из них у меня не работал. Последняя конфигурация следующая:

server {
        listen 80;
        server_name example.com;
        root /var/www/main;
        index index.html;

        location /docs/ {
           root /var/www/app;
        }
}

Когда я пытаюсь получить доступ http://example.com/docs/ Я вижу ошибку 404 Not Found и следующее сообщение в error_log:

* 1 "/var/www/app/docs/index.html" не найден (2: нет такого файла или каталога

Итак, он пытается открыть /var/www/app/docs/index.html вместо того /var/www/app/index.html.

Я знаю, что это можно исправить с помощью rewrite следующим образом: rewrite ^/docs/(.*)$ /$1 last;. У меня это работает, но также переписывает все относительные ссылки на все ресурсы, так что это не так.

Обновить:

1) моя проблема с alias:

location /docs/ {
   autoindex on;

   alias /var/www/app/;
}

"/var/www/app/index.html" не найден (2: нет такого файла или каталога)

2) Проблема с proxy_pass:

    location /docs/ {
       proxy_pass: http://127.0.0.1:8080;
    }

...
server {
    listen 8080;
    server_name localhost;

    root   /var/www/app;
    index  index.html;
}

Ошибка следующая:

/var/www/app/docs/index.html" is not found (2: No such file or directory)