Joomla por trás do servidor de cache com SSL

2

Estou tendo problemas para obter um sistema de cache para trabalhar com o Joomla 3.x. Isso é especialmente um problema, pois o servidor deve impor conexões HTTPS / TLS.

O sistema Joomla roda no Apache2 no Debian Wheezy.

Eu tentei configurar o Varnish, mas notei que o Varnish não pode finalizar o tráfego TLS, então eu precisaria rotear de volta para Apache ou HAProxy. Mas se eu fizer isso, o Joomla ficará confuso com os cabeçalhos de requisição que são reescritos enquanto o pedido é entregue através de todas essas camadas e o Joomla termina preso em um loop de redirecionamento ou responde com erros do servidor.

Existe uma maneira limpa de colocar um cache até mesmo um balanceador de carga na frente do Joomla sem esses problemas de redirecionamento que resultam da terminação SSL acontecendo em outro servidor?

    
por Izzy 14.01.2015 / 16:49

1 resposta

3

Como você mencionou. enquanto o Varnish não manipula o SSL, é possível usar um proxy de terminação SSL que passa para o Varnish. O proxy de terminação SSL pode adicionar ou remover cabeçalhos e alterar portas, portanto você deve ser capaz de criar um fluxo que evite loops de redirecionamento.

Os proxies populares de terminação SSL são Pound, Stunel, Nginx e HAProxy. O intervalo de recursos que você precisa deve determinar qual você usa. Versões recentes do Nginx e do HAProxy permitem que você use o SPDY e, após uma pesquisa rápida, eu diria que existem atualmente guias mais atualizadas para usar Nginx e Varnish do que os outros balanceadores.

Para o Nginx como um proxy de terminação SSL, o seguinte é comumente sugerido:

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;
        }
}

Isso está tomando SSL da porta 443, descriptografando e passando para a porta 80 do localhost. Ele está adicionando o cabeçalho X-Forwarded-Proto https , que indica que este é (era?) Tráfego SSL. A configuração também adiciona outros cabeçalhos que ajudam na leitura de registros, etc.

Com o Varnish escutando em localhost: 80, ele processará o pedido como o tráfego normal, passando-o para o Apache & Joomla

No Apache, você precisará de SetEnvIfNoCase X-Forwarded-Proto https HTTPS=on .

Tudo isso junto deve significar que o Joomla descobre o que está acontecendo e se comporta de maneira apropriada.

    
por 23.01.2015 / 12:26