Apache básico

Esse artigo tem o intuito de explicar as seguintes funções básicas do servidor web Apache: instalação, inicialização, principais arquivos de configuração, checagem do arquivo de configuração, virtualhosts, ServerAlias e ModProxy.

[ Hits: 41.937 ]

Por: Ricardo Omar do Amaral Jara em 29/06/2009


httpd.conf (parte 3) - Server Alias, autenticação básica, mod_proxy, arquivos de log



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.

Página anterior    

Páginas do artigo
   1. Da instalação à checagem de configuração
   2. httpd.conf (parte 1) - parâmetros ServerName, Listen e VirtualHost com exemplos
   3. httpd.conf (parte 2) - checkconf, módulos carregados, listagem de diretórios
   4. httpd.conf (parte 3) - Server Alias, autenticação básica, mod_proxy, arquivos de log
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Incrementando o visual do KDE 4

Virtualização de sistemas

Cluster de Virtualização com Ganeti

GNU/Linux integrado ao AD do Windows Server 2003

VPN Site-to-Site Openswan x ASA (Cisco)

  
Comentários
[1] Comentário enviado por walber em 29/06/2009 - 20:13h

Ricardo, parabêns muito bom artigo.

[2] Comentário enviado por reideer em 30/06/2009 - 07:51h

Boa iniciativa, mas será que vc poderia me esclarecer melhor a questão de tunning do apache para diferentes máquinas?

[3] Comentário enviado por eltonhbm em 25/09/2009 - 01:01h

parabens.. mto bem esclarecido
vlw!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts