ServerAlias
A opção ServerAlias serve para configurar outros nomes que você pode dar para seu Apache, por exemplo, é possível que você faça com que nosso site de exemplo http://www.veronica.com.br responda apenas pelo por http://veronica.
Para isso incluímos a seguinte linha dentro da configuração desse VirtualHost:
ServerAlias veronica
<VirtualHost *:80>
DocumentRoot /var/www/veronica
ServerName www.veronica.com.br
#inclusão do ServerAlias
ServerAlias veronica
</VirtualHost>
Dessa forma é possível acessar o site de 2 formas:
http://www.veronica.com.br
e
http://veronica
Lembrando que é necessário a inclusão do nome "veronica" dentro do arquivo
hosts das estações ou cadastrar esse nome do servidor de DNS.
Autenticação básica mod_auth_basic
Como inserir autenticação básica dentro de um diretório:
Algumas vezes necessitamos restringir o acesso de determinada área de nosso site, é possível fazer isso dentro das aplicações ou dentro do próprio Apache. Vamos exemplificar aqui a forma mais básica dessa autenticação.
Para isso necessitaremos carregar 2 módulos que fazem a autenticação básica e controle do arquivo de usuários e senhas:
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
Vamos supor que dentro do nosso site virtual www.veruska.com.br possuímos uma área que queremos disponibilizar para download de programas, mas que essa seja restrita, exemplo: http://www.veruska.com.br/restrito
Para isso, dentro do virtualhost www.veruska.com.br:
<VirtualHost *:80>
DocumentRoot /var/www/veruska
ServerName www.veruska.com.br
ServerAlias veruska
</VirtualHost>
Incluímos o seguinte:
<Directory /var/www/veruska/restrito>
AuthUserFile /var/www/veruska/restrito/.htpasswd
AuthGroupFile /dev/null
AuthName Password
AuthType Basic
<Limit GET>
require user teste
</Limit>
</Directory>
Aqui você está dizendo que /var/www/veruska/restrito é um diretório que necessita de uma diretiva, no casso diretivas de autenticação.
- AuthUserFile /var/www/veruska/restrito/.htpasswd -->aqui você está dizendo qual é o arquivo que conterá a base de usuários;
- AuthName Password --> Nome que aparecerá no banner de autenticação, nesse caso "Password";
- AuthType Basic --> Tipo de autenticação, nesse caso é básica;
- <Limit GET>
require user teste
</Limit> --> nessa tab estamos dizendo que o usuário "teste" será o único que poderá acessar essa página.
É necessário também criar o arquivo de senhas de usuários:
# touch /var/www/veruska/restrito/.htpasswd
Associar o usuário teste ao arquivo .htpasswd que acabamos de criar:
# htpasswd /var/www/veruska/restrito/.htpasswd teste
Após criar essa configuração é necessário reiniciar o Apache:
# /etc/init.d/httpd restart
Pronto, agora o endereço http://www.veruska.com.br/restrito pede senha para entrar.
Mod Proxy
Algumas vezes é necessário criar links que redirecionam um site hospedado no Apache para um endereço hospedado em outro servidor remoto.
Exemplo:
www.veronica.com.br/orkut direciona para www.orkut.com.br
Precisaremos de 4 módulos:
#mod_proxy
LoadModule proxy_module modules/mod_proxy.so
#mod_proxy_http
LoadModule proxy_http_module modules/mod_proxy_http.so
#mod_proxy_connect
LoadModule proxy_connect_module modules/mod_proxy_connect.so
#mod env
LoadModule env_module modules/mod_env.so
Diretivas que mantém a conexão com o usuário e abrem uma nova conexão com o outro servidor:
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
É possivel definir um timeout para o tempo que o servidor irá esperar a conexão da seguinte forma:
ProxyTimeout 300
Para que esse direcionamento funcione, definimos "Location" no nosso caso para /orkut da seguinte forma:
<Location /orkut>
</Location>
e criamos o ProxyPass necessário:
ProxyPass http://www.orkut.com.br
ProxyPassReverse http://www.orkut.com.br
Juntando tudo temos:
Timeout 300
<Location /orkut>
ProxyPass http://www.orkut.com.br
ProxyPassReverse http://www.orkut.com.br
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
Arquivo de log
É possível verificar quem está acessando o seu servidor adicionando arquivos de log:
- Logs de acesso
- Logs de erro
Para isso necessitaremos dos seguintes módulos:
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
É necessário também criar um padrão para como será armazenado nosso log, ou seja, que tipo de informação armazenaremos. Criamos então um padrão específico:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Inserimos as seguintes linhas para informar o local do armazenamento dos logs dentro do VirtualHost veronica:
ErrorLog /var/www/veronica/logs/error_log
LogLevel warn
CustomLog /var/www/veronica/logs/access_log combined
Se monitorarmos o arquivo /var/www/veronica/logs/access_log, veremos as tentativas de conexão dos usuários do servidor Apache, exemplo:
10.0.0.35 - - [22/Jun/2009:13:19:05 -0300] "GET / HTTP/1.1" 200 75 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)"
10.0.0.35 - - [22/Jun/2009:13:19:05 -0300] "GET /veronica.jpg HTTP/1.1" 200 37763 "http://www.veronica.com.br/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)"
e se monitorarmos o arquivo /var/www/veronica/logs/error_log veremos os erros. Por exemplo, se tentarmos acessar um arquivo que não existe teremos o seguinte erro:
[Mon Jun 22 13:21:10 2009] [error] [client 10.0.0.1] File does not exist: /var/www/veronica/testedeerro
Espero que tenham gostado desse breve manual. Lembrando que isso é apenas a ponta do icebergue de tudo que o Apache pode fazer.