コンテンツにスキップ

NGINX#

Lagoonのnginx-drupal Dockerイメージ。Drupalと連携するように最適化されています。Lagoonのnginxイメージに基づいています。

Lagoonの適応#

このイメージは、Lagoonで使用するために準備されています。そのため、すでにいくつかのことが行われています:

  • フォルダの権限は、fix-permissionsで自動的に適応されるため、このイメージはランダムなユーザーで動作します。
  • drupal.confの設定ファイルをできるだけシンプルで、カスタマイズしやすいようにするために、ファイルのメインセクション(serverlocation /location @drupallocation @php)にinclude指示を追加しました。
  • Drupal.confカスタマイズのセクションでさらなる情報を提供します。

含まれるDrupal設定 - drupal.conf#

このイメージには、Drupal 7, 8, 9の完全なNGINX動作設定が含まれています。以下のような追加機能も含まれています:

Drupal.confのカスタマイズ#

drupal.confファイルは、nginx設定ファイルをDrupal用にカスタマイズしたものです。顧客によってカスタマイズ方法は様々です:

  • 修正が困難 (エラーが発生した場合のサポートが難しい )
  • *.confファイルを使用した組み込みのカスタマイズ

drupal.confファイルはいくつかのセクションに分かれています。私たちがカスタマイズに含めたセクションは以下の通りです:

  • server
  • location /
  • location @drupal
  • location @php.

このセクションには、それぞれ2つのインクルードがあります:

  • *_prepend.conf
  • *_append.conf

location @drupalセクションは以下のようになります:

drupal.conf
location @drupal {
    include /etc/nginx/conf.d/drupal/location_drupal_prepend*.conf;

    include        /etc/nginx/fastcgi.conf;
    fastcgi_param  SCRIPT_NAME        /index.php;
    fastcgi_param  SCRIPT_FILENAME    $realpath_root/index.php;
    fastcgi_pass   ${NGINX_FASTCGI_PASS:-php}:9000;

    include /etc/nginx/conf.d/drupal/location_drupal_append*.conf;
}

この設定は、お客さまがlocation_drupal_prepend.confおよびlocation_drupal_append.confという名前のファイルを作成することを許可します。これらのファイルには、他のステートメントの前に挿入したい設定と、後に挿入したい設定をすべて記述することができます。

これらのファイルは一度作成されると、nginxコンテナ内に必ず存在しなければならないので、Dockerfile.nginxに以下のように追加します:

dockerfile.nginx
COPY location_drupal_prepend.conf /etc/nginx/conf.d/drupal/location_drupal_prepend.conf
RUN fix-permissions /etc/nginx/conf.d/drupal/location_drupal_prepend.conf

Drupal Core Statisticsモジュールの設定#

コアのStatisticsモジュールを使用している場合、簡単な設定変更が必要になるかもしれません。

デフォルトのNGINX設定では、トラッキングエンドポイント/core/modules/statistics/statistics.phpへのリクエストが拒否されます(404)

これはデフォルトのNGINX設定に関連しています:

drupal.conf
location ~* ^.+\.php$ {
    try_files /dev/null @drupal;
}

この問題を解決するために、特定のロケーションルールを定義し、これをロケーションのプリペンド設定として注入します:

drupal.conf
## Allow access to to the statistics endpoint.
location ~* ^(/core/modules/statistics/statistics.php) {
      try_files /dev/null @php;
}

NGINXコンテナのビルド時にこのファイルをコピーします。

dockerfile.nginx
# Drupal StatisticsモジュールのNGINX設定を追加する
COPY .lagoon/nginx/location_prepend_allow_statistics.conf /etc/nginx/conf.d/drupal/location_prepend_allow_statistics.conf