キャッシュシステムをJoomla3.xで動作させるのに問題があります。サーバーはHTTPS/TLS接続を強制する必要があるため、これは特に問題です。
JoomlaシステムはDebianWheezy上のApache2で実行されます。
Varnishをセットアップしようとしましたが、VarnishがTLSトラフィックを終了できないことに気付いたので、ApacheまたはHAProxyにルーティングする必要があります。しかし、そうすると、Joomlaは、リクエストがそれらすべてのレイヤーを通過する間に書き換えられるリクエストヘッダーと混同され、Joomlaはリダイレクトループでスタックして終了するか、サーバーエラーで応答します。
別のサーバーでSSL終了が発生することに起因するリダイレクトの問題なしに、Joomlaの前にロードバランサーでさえキャッシュを配置するクリーンな方法はありますか?
あなたが言ったように。 VarnishはSSLを処理しませんが、Varnishに渡すSSL終了プロキシを使用することは可能です。 SSLターミネーションプロキシはヘッダーを追加または削除したり、ポートを変更したりできるため、リダイレクトループを回避するフローを作成できるはずです。
一般的なSSLターミネーションプロキシは、Pound、Stunel、Nginx、HAProxyです。必要な機能の範囲によって、使用する機能が決まります。 NginxとHAProxyの最近のバージョンでは、SPDYを使用できます。簡単に検索すると、現在、他のバランサーよりもNginxとVarnishを使用するための最新のガイドがたくさんあると思います。
SSLターミネーションプロキシとしてのNginxの場合、一般的に次のことが推奨されます。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Host $Host;
}
}
これは、ポート443からSSLを取得し、復号化してローカルホストポート80に渡します。これがSSLトラフィックであることを示すX-Forwarded-Proto https
ヘッダーを追加しています。構成は、ログなどの読み取りに役立つ他のヘッダーも追加します。
Varnishがlocalhost:80でリッスンしていると、通常のトラフィックと同じようにリクエストを処理し、ApacheとJoomlaに渡します。
Apacheでは、SetEnvIfNoCase X-Forwarded-Proto https HTTPS=on
が必要になります。
これらすべてが一緒になって、Joomlaが何が起こっているのかを理解し、適切に動作することを意味するはずです。