web-dev-qa-db-ja.com

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スタイルなしですべてのページを表示したりしました)

乾杯

2

これに一日中2回過ごした後。私はついに完全に機能する解決策を見つけました:

  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)

1