Como configurar o host virtual sem cookies no Apache2?

1

Nós executamos mais de cem aplicações web (crescendo diariamente) em uma pilha LAMP usando o Apache2 no Ubuntu 10.04.

Gostaríamos que todas as solicitações de conteúdo estático fossem sem cookies.

Hospedamos aplicativos em vários domínios diferentes, a maioria dos quais como aplicativos SaSS. Muitos dos domínios hospedam instâncias dos aplicativos em sub-domínios, ie. myapp.example.com, myapp2.example.com myapp.otherexample.com etc.

No momento, todo o conteúdo estático é servidor relativo ao (sub) domínio que o solicita.

Tanto quanto eu entendo o processo, eu precisaria configurar um novo domínio, por exemplo. staticexample.com.

Nesse caso, é necessária uma configuração especial no host virtual para esse domínio para garantir que nenhum cookie seja exibido?

Além disso, seria possível usar static.example.com?

Nesse caso de quais configurações eu precisaria no meu host virtual para esse subdomínio para garantir que nenhum cookie fosse servido?

    
por xzyfer 13.02.2011 / 05:07

2 respostas

3

Quando você configura um domínio diferente (não subdomínio) para veicular conteúdo estático, ele ficará sem cookies. Os cookies são definidos pelo aplicativo e não pelo servidor da Web.

Exemplo. O Yahoo usa o yimg.com para fornecer conteúdo estático. Quando uma página em yahoo.com se refere a um objeto em yimg.com, o cookie de yahoo.com não é enviado com a solicitação enviada para o domínio yimg.com porque os cookies de um domínio não podem ser acessados por outro.

Sugiro que você use static-example.com para veicular conteúdo estático em vez de static.example.com. Para isso, você não precisaria fazer nada especial no servidor para cookies. Configure o domínio estático como se fosse um domínio normal e comece a usá-lo.

    
por 13.02.2011 / 14:35
0

Primeiro, a parte fácil: DNS. Tudo o que você precisa fazer é criar registros extras que apontam para o servidor, independentemente de você criá-los como registros CNAME de um nome de host existente ou de que os registros A que apontam diretamente para o endereço IP dependem de você.

Em segundo lugar, a parte média: Apache. Você não explica o que está hospedando ou se já tem hosts virtuais. A solução mais fácil é desativar completamente o hosting virtual (nenhum comando VirtualHost ou NameVirtualHost na sua configuração, apenas um DocumentRoot de nível global), o que fará com que o apache atenda exatamente ao mesmo site, independentemente de como o cliente esteja conectado. Caso contrário, se você quiser usar diferentes DocumentRoot s para nomes de host diferentes, será necessário definir NameVirtualHost como *:80 , em seguida, criar <VirtualHost *:80> (deve corresponder aos registros de NameVirtualHost), como

<VirtualHost *:80>
   ServerName www.example.com
   DocumentRoot /var/www/example.com
</VirtualHost>
<VirtualHost *:80>
   ServerName static.example.com
   DoumentRoot /var/www/static
</VirtualHost>

Finalmente, a parte difícil: torná-lo "cookieless". Os cookies no nível do domínio são enviados para todos os sites desse domínio. Por isso, você deve comprar um domínio completamente separado (por exemplo, staticexample.com) ou obrigar todos a usar "www.example.com" e emitir cookies válidos apenas em "www .example.com "na sua aplicação. A parte forçando pode ser feita com

<VirtualHost *:80>
   ServerName example.com
   RedirectPermanent / http://www.example.com/
</VirtualHost>

Corrigir os cookies em sua aplicação é com você. Por exemplo, veja o campo $ domain da função setcookie () do PHP.

Se você for com o domínio separado, em vez do redirecionamento acima, você poderá adicionar uma linha ServerAlias example.com ao www.example.com VirtualHost.

    
por 13.02.2011 / 06:37