Uma maneira é fazer com que o servidor de origem faça o redirecionamento, mas parece mais eficiente fazer com que o Squid o faça. Existem algumas abordagens, mas usar o deny_info parece ser o mais fácil.
No arquivo de configuração do squid.conf:
acl PORT80 myport 80
acl MYSITE dstdomain foo.server.com
http_access deny PORT80 MYSITE
deny_info 301:https://foo.server.com%R MYSITE
À primeira vista, a instrução http_access apenas nega acesso à versão HTTP do seu site. No entanto, devido à declaração deny_info, o Squid redirecionará os usuários para um site alternativo (neste caso, a versão HTTPS), em vez de simplesmente fornecer uma mensagem de acesso negado.
A tag %R
faz com que o caminho do URL de solicitação seja incluído no redirecionamento. Assim, se os usuários tentarem visitar http://foo.server.com/bar
, eles serão direcionados para https://foo.server.com/bar
, em vez de apenas https://foo.server.com
.
A lista completa de tags de formato de URL está disponível na documentação do Squid: link
A ordem das instruções acl é importante porque o Squid só lembra o último http_access deny
e procura o deny_info
para corresponder a essa acl.