リバースプロキシを使用したdrupal8サイト構築について

peko777's picture

お世話になります。

drupal8を使用しサイトを構築しています。
フロントのサーバにapacheのリバースプロキシを使用し、
構築しているサーバにアクセスしようとしているのですが、

apacheのリバースプロキシを使用する場合、
drupal8で作成しているサイト側に設定を入れなければいけないのでしょうか?
(settings.php等)

[構成]
ユーザ ⇒(ssl) https://example.com/hogehoge(/hogehogeの場合、リバースプロキシ) ⇒ http://xxx.xxx.xxx.xxx/(drupal8構築サイト)

方法をご存知の方いらっしゃいましたら教えていただけると助かります。
よろしくお願いいたします。

Comments

redboxhosting's picture

こんにちは。

リバースプロキシやApacheの設定にもよるのですが、Apacheの設定でリクエストヘッダが自動的にバックエンドのリクエストに転用されるのであれば、何もしなくても大丈夫です。

例:
www.testboxtest.com/testtest → localhost:81 (Host:www.testboxtest.com)

勿論、Apacheで名前ベースのバーチャルホストを設定していない場合は、HOSTSヘッダがなくても問題は無いのですが、いろいろな意味できちんとバックエンドにリクエストする際にヘッダは設定しておいた方が良いです。

また、考え方にもよりますが設定を全てリバースプロキシで行うのか、その先のApacheで調整するのか、それともDrupalで調整するのか、どのレイヤーで調整したほうが運用がしやすいか検討してみても良いと思います。

Drupalはホストヘッダやドメイン名に依存しにくいため、このあたりの設定は他のCMSより楽ですよ

回答ありがとうございます。

peko777's picture

なぜか投稿しようする下記が出てしまい返事が遅くなってしまい申し訳ありません。。。
Your submission has triggered the spam filter and will not be accepted・・・・

やはり多少の設定は必要なのですね、
運用を考慮して再度検討してみます。

貴重なご意見ありがとうございます。

muro's picture

2重投稿しちゃった・・これ消せないのかな・・

Drupal8

muro's picture

Drupal8 は未検証ですが、Drupal7のときは、下記設定しないとセッション周りおかしくなりました。
ただ、セッション回りはかなりカスタムしてたので、参考までに。

クライアント→443→ELB(SSLアクセラレータ)→80→ EC2

                                              
// https://stackoverflow.com/questions/36800983/enabling-https-in-drupal-be... 
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == "https") {
    $base_url = 'https://' . $_SERVER['HTTP_HOST'];
    $conf['reverse_proxy'] = TRUE;
    $conf['reverse_proxy_addresses'] = array('XXX.XXX.XXX.XXX');
    $conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
} elseif ($_SERVER['HTTPS'] = "on") {
    $base_url = 'https://' . $_SERVER['HTTP_HOST'];
} else {
    $base_url = 'http://' . $_SERVER['HTTP_HOST'];
}

回答ありがとうございます。

peko777's picture

Drupal8でもはやり必要そうですね。。。

構成的に同じなので
設定を参考にさせていただきますね。