Drupalドメインに7つのWebサイトhiddendomain.be:32があります。publicdomain.beにアクセスするユーザーは、非表示のドメインにプロキシされます。ホームページは正常に表示されますが、既存のアカウントTestUserでログインすると、「このページへのアクセス権がありません」というメッセージが表示されます。Drupalは、ユーザーを匿名として処理します。これは、publicdomain.be/userにアクセスするとすぐに再びログインフォームが返されるためです。ただし、ログレポートでは、新しいセッションが作成されています。 TestUser。なぜこれが起こるのですか?
答えを求めてウェブを閲覧していますが、見つかったのはsettings.php
デフォルトディレクトリのファイル(私の場合はsettings.local.php
)追加して
$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array('IP');
ここで、IPはpublicdomain.beサーバーのIPアドレスです。残念ながら、これは機能しません。何が悪いのですか?
問題は、Cookieがドメインに関連付けられる方法に関係しています。 Drupalサイトにログインした後、DrupalはブラウザにCookieを送信し、それが将来のリクエストでそれが認証されたことを示すために使用します。Drupalは、そのCookieを、ログインが発生したドメインに関連付けます。プロキシはhiddendomain.be
ドメインを使用してDrupalサイトにリクエストを送信するため、 DrupalはCookieを関連付けます。ただし、訪問者のブラウザはpublicdomain.be
にリクエストを送信するため、Drupalサイトから受け取ったCookieを考慮しますそのドメインに属しています。問題の原因となっているのはこの不一致です。
これを修正するには、Drupalを設定して、Cookieをpublicdomain.be
ドメインに関連付ける必要があります。settings.php
で、次の行を追加または更新します:$cookie_domain='publicdomain.be';
パブリックドメインとプライベートドメインがルートを共有している場合は、ドメインルートをcookie_domain
として使用できます。たとえば、パブリックドメインがwww.example.com
であり、プライベートドメインがprivate.example.com
の場合、settings.php
では$cookie_domain='.example.com';
になります(ドメインの前にドットがあることに注意してください) )。