nginx による複数のドキュメント ルート

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/error_log に 404 Not Found エラーと次のメッセージが表示されます。

*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)

関連情報