É possível configurar o Apache para diferentes hosts virtuais com base no IP de origem ? (ou seja, mesma interface, mesmo nome de host, mas dois hosts virtuais diferentes, com conteúdo diferente, com base no IP de origem .)
A motivação para isso é que meu endereço IP possa acessar o site corretamente, mas que todos os outros obtenham a página de espera. A solução convencional parece usar o mod_rewrite para direcionar os visitantes para uma página separada dentro da mesma docroot, mas eu gostaria de usar uma docroot completamente diferente para a página de espera.
apache-2.2
ip
virtualhost
ithinkihaveacat
fonte
fonte
Respostas:
Não sei se isso é possível (sem mod_rewrite, enfim) no nível do Apache.
Aqui está outra ideia. E se você configurar dois hosts virtuais Apache e depois usar o iptables para encaminhar de forma transparente o visitante para corrigir o host virtual? Algo como
Ou algo parecido. :)
fonte
Realmente não seria um host virtual diferente. Mas, usando algo como mod_rewrite ou mod_alias, você pode exibir conteúdo de qualquer pasta para a qual você definiu as permissões apropriadas. Há apenas um docroot, mas você pode efetivamente mudar isso rapidamente.
Uma maneira de fazer isso pode ser:
Observe, porém, que provavelmente seria um pouco mais limpo lidar com isso com um subdomínio dev.
fonte
Apache 2.3 ou posterior
Com o Apache 2.3 ou posterior, você aparentemente pode fazer algo assim (testado):
Apache 2.2 ou anterior
Atualização: Esta não é uma boa solução. Ver abaixo.
Você tem que fazer um hack como este. Observe o
[PT]
que significa "passagem". Sem ele, um redirecionamento HTTP real é enviado de volta ao cliente, o que provavelmente não é o que você deseja. A[OR]
coisa (que significa "ou") mostra como combinar vários endereços.Você precisa habilitar o
mod_rewrite
que pode fazer no Debian / Ubuntu com este comando:Observe que esse método não impede completamente que outras pessoas acessem seu site de teste; portanto, você provavelmente desejará adicionar alguma segurança ou apenas escolher um prefixo mais obscuro do que
next
.Atualização no método mod_rewrite.
Existem alguns problemas com esse método. Primeiro, o Django não funciona com dois sites no mesmo processo como este, você precisa seguir as instruções nesta resposta .
Em segundo lugar, mod_rewrite não funciona com
POST
solicitações ! Todos osPOST
s são alterados silenciosamente paraGET
e os dados da postagem são descartados. Muito frustrante! Portanto, eu recomendo que você use o ...versão do iptables
Simplesmente execute os servidores em duas portas diferentes. Este inclui o material WSGI para ter dois sites django separados.
Então você pode usar este
iptables
comando para rotear solicitações do seu endereço IP na porta 80 para a porta 1222:Mude
-A
para-D
para remover a regra.Observe que os documentos sugerem que você precisa adicionar comandos
Listen
e adicionaisNameVirtualHost
, mas na verdade descobri que funciona sem eles, e a adição deles fez com que parasse (pelo menos no ubuntu).fonte
Alias cannot occur within <Directory/Location/Files> section
alguma correção? Eu realmente preciso disso: $AFAIK, a única maneira de fazer isso é vincular um local dentro da raiz do documento ao seu conteúdo fora da raiz do documento e, em seguida, reescrever a solicitação.
fonte
Como o @Timmmm disse, mas corrigindo a instrução ipmatch (observe '10 .10.10.10 '): ServerName www.example.com
Porque, caso contrário, ele mostrará o erro:
fonte