Configurando subdominios no apache 2.2

586 views
Skip to first unread message

Guilherme Mar

unread,
Oct 4, 2009, 2:06:28 PM10/4/09
to TcheLinux
Buenas gurizada.

Estou tentando implementar no meu apache subdominios, mas não estou
conseguindo fazer a coisa funcionar. Já revirei o google e o manual do
apache sem sucesso ( talvés pelo meu fraco inglês ), olhei alguns
tópicos mas faço igual e comigo não funciona mesmo.

Estou tentando criar subdominios para um host ex.

guilhermemar.com - cai no site; e
home.guilhermemar.com cai em outro local.

Mas primeiro estava tentando fazer diferentes hosts funcionar, sem
sucesso.

No arquivo hosts ( sim, o servidor é um Windows server 2003 standart )
fiz os dominios redirecionarem para o proprio micro ( para poder ir
testando )

127.0.0.1 www.guilhermemar.com
127.0.0.1 www.guilhermemar2.com

e no final do arquivo httpd.conf do apache:

<VirtualHost *>
ServerName www.guilhermemar.com
ServerAlias www.guilhermemar.com
DocumentRoot C:\apache\htdocs\guilhermemar\home
<Directory C:\apache\htdocs\guilhermemar\home >
Options All Includes Indexes
</Directory>
</VirtualHost>

<VirtualHost *>
ServerName www.guilhermemar2.com
ServerAlias www.guilhermemar2.com
DocumentRoot C:\apache\htdocs\guilhermemar
<Directory C:\apache\htdocs\guilhermemar >
Options All Includes Indexes
</Directory>
</VirtualHost>

Ocorre que qualquer um dos host que eu coloco cai sempre no primeiro
caminho ( DocumentRoot ), obs que se eu colocar localhost cai no
padrao.

Motei esse virtualhost s buscando pedaços de vários cantos.
Nota. o servidor está trabalhando na porta 1780, mas ja tentei deixar
isso explicito ali e mesmo assim ocorreu a mesma coisa. Imagino que é
alguma coisa que preciso informar que está faltando.

Desde já agradeço a ajuda.

[ ]s
Guilherme Mar

renator

unread,
Oct 5, 2009, 7:21:24 AM10/5/09
to TcheLinux
Sei que isso você está usando windows, mas acredito que esse artigo vá
te ajudar: http://www.dicas-l.com.br/dicas-l/20081220.php
Mas pelo que eu vi, parece que o problema na sua configuração é o
DocumentRoot. Tente fazer da seguinte forma, para ver se funciona:

<VirtualHost *>
ServerName www.guilhermemar.com
ServerAlias www.guilhermemar.com

DocumentRoot C:\apache\htdocs\guilhermemar

<Directory C:\apache\htdocs\guilhermemar\home >
Options All Includes Indexes
</Directory>
</VirtualHost>

<VirtualHost *>
ServerName www.guilhermemar2.com
ServerAlias www.guilhermemar2.com

DocumentRoot C:\apache\htdocs\guilhermemar2

<Directory C:\apache\htdocs\guilhermemar >
Options All Includes Indexes
</Directory>
</VirtualHost>


[]'s,
Renato

Ernani Azevedo

unread,
Oct 5, 2009, 9:11:00 AM10/5/09
to tche...@googlegroups.com
Olá Guilherme,

Primeiramente, verifique se você tem a tag "NameVirtualHost" antes de declarar as sessões "VirtualHost".
Notei apenas dois detalhes na sua configuração:

1) Não está declarando a porta na tag "VirtualHost". O correto é sempre declarar;
2) A tag "ServerAlias" serve apenas quando quer se adicionar alias para o virtual host, e como no teu caso é o mesmo, pode e deve ser removido.

Uma configuração básica seria:

# Declara o IP e porta a ser virtualizado. Isso indica para o Apache que ele deve escutar no
# IP e porta determinado e deve verificar os hosts virtuais equivalentes. Quando se utiliza "*"
# no lugar do IP, indica que todos os IP's locais (interface loopback, ethernet, etc...) devem
# ser utilizados. A porta padrão é 80.
NameVirtualHost *:80

# Agora declaramos o primeiro host virtual. Lembre-se que sempre que nenhum host virtual
# satisfazer a requisição, o primeiro é utilizado. Como parâmetro, informamos qual o IP e
# porta queremos responder para este host virtual. Lembre-se que deve haver uma tag
# NameVirtualHost declarada anteriormente com o mesmo IP e porta.
<VirtualHost *:80>
    ServerName www.guilhermemar.com

    DocumentRoot C:\apache\htdocs\guilhermemar\home

    <Directory "C:\apache\htdocs\guilhermemar\home">
        Options None
        AllowOverride AuthConfig Limit
 
        Order allow,deny
        Allow from all
   </Directory>

    ErrorLog C:\apache\logs\www.guilhermemar.com-error_log
    CustomLog C:\apache\logs\www.guilhermemar.com-access_log combined
</VirtualHost>

# Agora declaramos o segundo host virtual, no mesmo IP e porta.
<VirtualHost *:80>
    ServerName www.guilhermemar2.com

    DocumentRoot C:\apache\htdocs\guilhermemar

    <Directory "C:\apache\htdocs\guilhermemar">
        Options None
        AllowOverride AuthConfig Limit
 
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog C:\apache\logs\www.guilhermemar2.com-error_log
    CustomLog C:\apache\logs\www.guilhermemar2.com-access_log combined
</VirtualHost>

Isto deve resolver teu problema. Para entender um pouco mais sobre como funciona o virtual host, segue uma pequena explicação:

A utilização de hosts virtuais para Apache nasceu da necessidade de "poupar" endereços IP's. Antigamente, para cada site servido era necessário um IP (como é com SSL, mais abaixo explico o porque). Para isso, criou-se o virtual host, fazendo com que o servidor web responda por mais de um site com um único IP. Ele faz isso através da tag de requisição HTTP "Host". Hoje todos os navegadores enviam no mínimo duas linhas de cabeçalho, que é:

MÉTODO /caminho/arquivo.ext[?param1=valor1[&param2=valor2[...]]] HTTP/1.0 (ou 1.1)
Host: www.paginarequisitada.com

O método mais comum é o GET, seguido pelo POST, utilizado por formulários para enviar um volume maior de informações, visto que o GET envia os dados no cabeçalho, como se fizesse parte do endereço, e o POST envia após este cabeçalho. O GET está limitado a 1024 caracteres. Existem diversos outros métodos, tais como HEAD, DELETE, UPDATE, etc.. mas que são raramente utilizados (não, você não vai conseguir sair por aí removendo páginas com o comando DELETE, ele raramente é habilitado). Cada um tem sua função e alguns habilitam tags extras no cabeçalho de requisição.

Através do que foi informado na tag "Host", o servidor web procura por um virtual host equivalente, verificando seus alias também. O primeiro virtual host equivalente é utilizado, e caso nenhum seja equivalente, o primeiro é utilizado.

Vale lembrar que podemos utilizar máscara na tag "ServerAlias", por exemplo "ServerAlias *.guilhermemar2.com". Mas temos que tomar cuidado com esta tag, pois se fizermos isso no primeiro virtual host e tivermos outro virtual host com o endereço "www2.guilhermemar2.com" posterior a este, o primeiro será utilizado, pois o primeiro equivalente é utilizado e o restante não é processado. Podemos utilizar mais de um alias, concatenando os mesmos na mesma tag ServerAlias seguida por todos hosts separados por espaço.

Você pode verificar a configuração processada pelo Apache quanto aos virtual hosts utilizando:

bash# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server www.xxx.com.br (/etc/httpd/extra/httpd-vhosts.conf:27)
         port 80 namevhost www.xxx.com.br (/etc/httpd/extra/httpd-vhosts.conf:27)
         port 80 namevhost www.yyy.com.br (/etc/httpd/extra/httpd-vhosts.conf:90)
Syntax OK

Esta configuração não lista alias, mas sempre que tiver problemas de estar sendo servido por outro virtual host, verifique o que está sendo servido se a tag ServerAlias não está com máscaras ou parâmetros errados.

Quanto ao SSL (mais conhecido por HTTPS) esta função não é possível de ser utilizada. Na verdade é, mas o navegador vai reclamar do certificado. A limitação está no certificado, que contém o endereço do servidor. Quando um cliente conecta em um serviço HTTPS, o servidor antes de receber quaisquer requisição HTTP envia o certificado configurado para aquele site, e depois então o cliente envia a requisição HTTP com a tag Host. Se o host requisitado não for o mesmo do certificado, o navegador vai bloquear e informar ao usuário que ele não está acessando o site que requisitou.

Espero ter esclarecido suas dúvidas, qualquer coisa avisa :)

[]'s
--
Ernani Azevedo

2009/10/4 Guilherme Mar <gfma...@gmail.com>

Guilherme Mar

unread,
Oct 10, 2009, 11:07:48 PM10/10/09
to TcheLinux
Renator
Olhei o link, foi inclusive a favoritos, me foi útil para eu poder
criar subdominios

Ernani
Era a falta do NameVirtualHost mesmo, ele sepre caia na primeira
configuração.

Agradeço a atenção, aprendi mais com a sua explicação. Agora está
funcionando 100% e sei o que estou fazendo, para fazer possíveis
otimizações.

Agradeço a atenção!

[ ]s
Guilherme Mar
Reply all
Reply to author
Forward
0 new messages