У меня проблемы с настройкой кеш-системы для работы с Joomla 3.x. Это особенно проблема, поскольку сервер должен обеспечивать HTTPS / TLS-соединения.
Система Joomla работает на Apache2 на Debian Wheezy.
Я пытался настроить Varnish, но заметил, что Varnish не может прервать трафик TLS, поэтому мне нужно было направить его обратно на Apache или HAProxy. Но если я это сделаю, Joomla запутается с заголовками запросов, которые переписываются, пока запрос проходит через все эти уровни, и Joomla либо застревает в цикле перенаправления, либо отвечает с ошибками сервера.
Есть ли чистый способ поставить кеш даже балансировщик нагрузки перед Joomla без тех проблем с перенаправлением, которые возникают из-за завершения SSL, происходящего на другом сервере?
Как вы упомянули. пока Varnish не поддерживает SSL, можно использовать завершающий прокси SSL, который передает Varnish. Прокси-сервер завершения SSL может добавлять или удалять заголовки и изменять порты, поэтому вы сможете создать поток, который избегает петель перенаправления.
Популярные прокси для завершения SSL - это Pound, Stunel, Nginx и HAProxy. Набор необходимых функций должен определять, какие из них вы используете. Последние версии Nginx и HAProxy позволяют использовать SPDY, и после быстрого поиска я бы сказал, что в настоящее время есть более современные руководства по использованию Nginx и Varnish, чем другие балансировщики.
Для Nginx в качестве прокси завершения SSL обычно предлагается следующее:
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;
}
}
Это берет SSL с порта 443, расшифровывает и передает его на порт 80 localhost. Это добавляет X-Forwarded-Proto https
заголовок, указывающий, что это (был?) трафик SSL. Конфигурация также добавляет другие заголовки, которые помогают читать журналы и т. Д.
При прослушивании Varnish на localhost: 80 он будет обрабатывать запрос как обычный трафик, передавая его в Apache и Joomla.
В Apache вам понадобится SetEnvIfNoCase X-Forwarded-Proto https HTTPS=on
.
Все это вместе должно означать, что Joomla понимает, что происходит, и ведет себя соответствующим образом.