Está en la página 1de 8

14/7/2014 Demonstrao de Apache

http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 1/8
Demonstrao de Apache
Esta demonstrao destina-se a fornecer os conhecimentos bsicos para instalar e configurar um servidor
Apache num sistema Linux Fedora Core. Para alm de algum contedo terico, inclui alguns exerccios
prticos onde se podem exercitar os conhecimentos.
Esta demonstrao usa o contedo do manual do Apache 2.0 e de http://www.linuxhomenetworking.com/
como pginas de referncia para o contedo terico. Recomenda-se uma leitura prvia da pgina
http://www.linuxhomenetworking.com/.
ndice
1. Configurao bsica do servidor Apache 2.0
2. Acesso condicionado a pginas
3. Configurao de servidores virtuais
4. Configurao proxy
5. Exerccio
1. Configurao bsica do servidor Apache 2.0
Arranque do servidor
O apache constitudo pelo servidor principal (/usr/sbin/httpd) mais um conjunto de mdulos, acessveis em
/etc/httpd/modules.
Pode ser arrancado numa interface grfica, ou utilizando o script "/etc/init.d/httpd" directamente, ou atravs
do comando "service httpd":
service httpd start // Arranca o servidor
service httpd stop // Para o servidor
service httpd restart // Reinicia o servidor
O comando chkconfig usado para ligar ou desligar o arranque do servidor apache durante o arranque do
computador:
chkconfig httpd on // Liga Apache
chkconfig httpd off // Desliga Apache
Ficheiros de configurao
O ficheiro de configurao principal do servidor Apache /etc/httpd/conf/httpd.conf. Este ficheiro lido
durante o arranque do servidor, sendo necessrio reiniciar o servidor cada vez que modificado. Na
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 2/8
distribuio Fedora Core tem o seguinte contedo.
Na directoria /etc/httpd/conf.d/ existem outros ficheiros de configurao de mdulos especficos para o
suporte de php, SSL, Perl, etc, no focados nesta demonstrao.
httpd.conf
O ficheiro httpd.conf est organizado por seces. A primeira seco tem um conjunto de configuraes
globais do servidor web. Exemplos de configuraes nesta seco so:
ServerRoot "/etc/httpd" Directoria raiz onde esto ficheiros de configurao e os mdulos
Timeout 120 Tempo mximo de espera por um pedido numa ligao (seg)
KeepAlive Off Permite reutilizao de ligaes para HTTP/1.1 se On
MaxKeepAliveRequests 100 N mximo pedidos por ligao reutilizada
KeepAliveTimeout 15 Tempo mximo de espera por novo pedido (seg)
Listen 80 //
Todos
Listen 193.136.120.1:80 // S
IPv4
Listen [2002:690:2005:10:33::11]:80
// S IPv6
Define porto (e endereo IP) onde o servidor recebe comandos
HTTP.
LoadModule foo_module
modules/mod_foo.so
Carrega em memria o cdigo de um mdulo sobre a forma de uma
biblioteca de ligao dinmica.
Include conf.d/*.conf
L todos os ficheiros de configurao da subdirectoria conf.d/ relativos
raiz da distribuio
A segunda seco tem a configurao do servidor web principal. Exemplos de configuraes nesta seco
so:
User apache
Group apache
Define o utilizador (uid) e o grupo (gid) com que
corre o httpd
ServerAdmin root@localhost
Endereo correio electrnico do administrador do
servidor
ServerName new.host.name:80
Define o nome DNS/porto do servidor - por
omisso est comentado
DocumentRoot "/var/www/html" Directoria raiz onde est o '/' das pginas web.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Define opes por omisso para todas as pginas
web:
-Options FollowSymLinks - segue links
simblicos em todas as pastas.
(mais sobre options)
- AllowOverride None - no permite redefinir as
permisses em subdirectrios (mais sobre
segurana)
<Directory "/var/www/html">
...
</Directory>
Definies relativas ao directrio "/var/www/html"
no sistema de ficheiros, que no exemplo
corresponde ao URL raiz '/'
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 3/8
Order allow,deny
Allow from all
Regras de acesso a directrio: deixa os browsers
aceder a qualquer ficheiro no servidor web
DirectoryIndex index.html index.html.var
Ficheiro devolvido quando o URL selecciona uma
directoria; var significa cdigo de pas (e.g. pt)
AccessFileName .htaccess
Nome de ficheiro de redifinio de regras de
acesso a directoria
TypesConfig /etc/mime.types Tabela que associa extenses a tipos MIME
DefaultType text/plain
Tipo MIME devolvido quando a extenso no est
na tabela
ErrorLog logs/error_log
LogLevel warn
LogFormat ...
Controlo da informao de log do servidor: onde
guardada, o que guardado; como guardado.
Alias /icons/ "/var/www/icons/"
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
Definio de psedminos para directorias locais
AddLanguage pt .pt
Definio de extenso de ficheiros associados a
uma lingua
AddCharset ISO-8859-1 .iso8859-1 .latin1 Definio de tipo de caracteres lista global
AddDefaultCharset UTF-8
Definio do tipo de caracteres devolvido. Por
omisso vem UTF-8. Deve ser substitudo por
ISO-8859-1 para no haver problemas com as
ferramentas mais comuns de design de pginas!
ErrorDocument 500 "The server made a boo boo."
Definio textual da mensagem de erro associada
ao cdigo 500
ErrorDocument 500
/error/HTTP_INTERNAL_SERVER_ERROR.html.var
Associao da mensagem de erro a um ficheiro
html que depende da lingua (var = en ou pt ou
etc.)
BrowserMatch "Mozilla/2" nokeepalive
Modifica o comportamento do servidor
dependendo do browser (no envia keepalive)
(mais informao)
Faltam os comandos de configurao de procuradores e de servidores virtuais, descritos mais adiante.
Note-se que se o Apache corre como utilizador apache, todas as pginas do servidor tm de poder ser lidas
por este utilizador.
2. Acesso condicionado a pginas
Regras de acesso a ficheiros e directorias
O ficheiro httpd.conf define as regras de acesso por omisso para acesso a ficheiros e directorias
(comandos Order, Allow, Deny, Indexes), e pode definir regras especficas para subdirectorias. As opes
Allow e Deny podem ser genricas (Allow from All ou Deny from None), podem definir domnios DNS
(e.g. Allow from .example.com), ou podem definir subredes mltiplas de 8 bits (e.g. Allow from
192.168.1). possvel realizar a conjuno ou disjuno de regras utilizando a opo satisfy.
No entanto, pode-se delegar as regras para um ficheiro local directoria (por omisso ".htaccess"), desde
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 4/8
que o comando "AllowOverride Limit" tenha sido definido directamente, ou indirectamente, numa directoria
a nascente. (mais informao). Para evitar problemas de segurana acrescenta-se a seguinte regra para
proibir o acesso a todos os ficheiros comeados por .ht (e.g. .htaccess):
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
O comando AllowOverride tem outras opes para permitir revogar primitivas de autorizao (AuthConfig),
informao sobre ficheiros (FileInfo), listar directorias (Indexes) (mais informaes)
Proteger pginas com palavras de passe
Baseado em http://www.linuxhomenetworking.com/
O apache suporta os dois modelos de autenticao definidos no RFC 2617. Utilizando o utilitrio htpasswd,
possvel definir nomes de utilizadores e palavras de passe. O exemplo seguinte ilustra a definio de dois
utilizadores, no ficheiro /etc/httpd/conf/.htpasswd:
# htpasswd -c /etc/httpd/conf/.htpasswd peter // Cria novo ficheiro, s com uma entrada
# htpasswd /etc/httpd/conf/.htpasswd paul // Acrescenta mais um utilizador aos existentes
Este ficheiro tem de ser desprotegido para poder ser lido pelo utilizador apache:
# chmod 0644 /etc/httpd/conf/.htpasswd
Para o modo bsico, na definio de uma directoria no ficheiro httpd.conf, ou num ficheiro .htaccess dentro
da directoria deve ser definida a seguinte informao:
AuthUserFile /etc/httpd/conf/.htpasswd // Define qual o ficheiro com as palavras de passe
AuthGroupFile /dev/null // No so usados grupos
AuthName EnterPassword // Nome do domnio de autenticao
AuthType Basic // Tipo de autenticao
require user peter // Lista de utilizadores requeridos
O apache tambm suporta o modo de autenticao digest (mais informaes).
3. Configurao de servidores virtuais
Um servidor httpd pode suportar vrios stios web virtuais, com conjuntos de pginas independentes, com
nomes distintos. Esta seco foi baseada no manual do apache.
Para criar servidores virtuais necessrios definir quais os endereos IP e portos onde o servidor vai receber
os pedidos, utilizando o comando NameVirtualHost para cada par endereo:porto:
NameVirtualHost addr[:port]
Exemplos de utilizao:
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 5/8
NameVirtualHost 172.16.33.11:80 Recebe ligaes IPv4 na interface especificada no porto 80
NameVirtualHost
[fe80::a00:20ff:fea7:ccea]:8080
Recebe ligaes IPv6 na interface especificada no porto
8080
NameVirtualHost *
Recebe ligaes para servidores virtuais em qualquer IP e
porto
Cada servidor virtual definido com o comando VirtualHost:
<VirtualHost addr[:port] [addr[:port]] ...>
...
</VirtualHost>
Dentro de cada servidor virtual necessrio definir o nome DNS porque o servidor virtual vai ser
identificado, utilizando o comando ServerName:
ServerName fully-qualified-domain-name[:port]
Desta forma, possvel definir vrios servidores virtuais utilizando seleco por endereo IP ou por nome. O
comando NameVirtualHost e o campo ServerName apenas devem ser usados quando se usa seleco por
nome. No segundo caso (por IP), apenas deve ser usado o campo VirtualHost.
Dentro da definio de cada servidor virtual define-se qual a raiz do sistema de ficheiros usada
(DocumentRoot), o administrador do servidor (ServerAdmin), onde se guardam as mensagens de erro
(ErrorLog), onde est a directoria com os scripts (ScriptAlias), etc. Ou seja, possvel redefinir quase
todas as configuraes globais dentro da definio de cada servidor virtual. Por exemplo, para trs
servidores virtuais identificados por nome:
NameVirtualHost 172.16.33.11
<VirtualHost 172.16.33.11>
ServerName www.pc-11.rit2.pt // Nome DNS do primeiro servidor virtual
DocumentRoot /www/hosts/www.pc-11.rit2.pt/docs
ScriptAlias /cgi-bin/ /www/hosts/www.pc-11.rit2.pt/cgi-bin
</VirtualHost>
<VirtualHost 172.16.33.11>
ServerName www.pc-21.rit2.pt // Nome DNS do segundo servidor virtual
DocumentRoot /www/hosts/www.pc-21.rit2.pt/docs
ScriptAlias /cgi-bin/ /www/hosts/www.pc-21.rit2.pt/cgi-bin
</VirtualHost>
<VirtualHost 172.16.33.11>
ServerName www.pc-31.rit2.pt // Nome DNS do terceiro servidor virtual
DocumentRoot /www/hosts/www.pc-31.rit2.pt/docs
ScriptAlias /cgi-bin/ /www/hosts/www.pc-31.rit2.pt/cgi-bin
</VirtualHost>
Outro exemplo de configurao para um endereo IPv6:
<VirtualHost [fe80::a00:20ff:fea7:ccea]>
ServerAdmin webmaster@host.example.com
DocumentRoot /www/docs/host.example.com
ServerName host.example.com
ErrorLog logs/host.example.com-error_log
TransferLog logs/host.example.com-access_log
</VirtualHost>
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 6/8
4. Configurao proxy
O servidor Apache tambm oferece o servio de proxy. O apache pode funcionar como proxy HTTP desde
que se carregue o mdulo mod_proxy, mod_proxy_http, e realizar caching desde que se carregue o
mdulo mod_cache. Pode ser configurado para funcionar no modo proxy directo (com os clientes
configurados para funcionarem com um proxy) ou no modo inverso (com os clientes a fazer pedidos locais,
que so mapeados para pginas em servidores web remotos).
Procurador directo
O modo convencional de funcionamento activado com o comando ProxyRequest:
ProxyRequests On
No protocolo HTTP/1.1, o campo de cabealho Via usado para controlar de onde vem o pedido. O
Apache permite controlar se enviado este campo de cabealho, e o nmero mximo de procuradores
atravessados (com ProxyMaxForwards):
ProxyVia On ; podia ser "Full" (acrescenta a verso servidor); "Off" no acrescenta; "Block"
remove o campo Via; "On" acrescenta
O comando ProxyTimeout permite definir o nmero de segundos que o proxy espera pela resposta a um
pedido:
ProxyTimeout seconds ; por omisso 300 segundos
Procurador inverso
Para funcionar no modo inverso necessrio que se carreguem os mdulos mod_proxy e mod_cache, e
desactivar o modo directo (ProxyRequests Off). A configurao realizada utilizando os comandos
ProxyPass e ProxyPassReverse. O comando ProxyPass associa um caminho local a um URL remoto:
ProxyPass [path] !|url
A seguinte linha associa um nome local a um site remot
ProxyPass /mirror/foo/ http://outro.servidor.com/
Supondo que o servidor local http://examplo.com/ ento um pedido local a
http://examplo.com/mirror/foo/bar convertido internamente num pedido proxy para
http://outro.servidor.com/bar.
A directive ! usada para excluir subdirectorias. O exemplo seguinte define um proxy inverso de todas as
subdirectorias de /mirror/foo excepto os pedidos a /mirror/foo/i:
ProxyPass /mirror/foo/i !
ProxyPass /mirror/foo http://outro.servidor.com
O comando ProxyPassReverse lida com resposta de redireco de servidor, ajustando os URLs em
campos de cabealho Location, Content-Location, e URI:
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 7/8
ProxyPassReverse [path] url
Geralmente usado com os mesmos valores do comando ProxyPass:
ProxyPass /mirror/foo/ http://outro.servidor.com/
ProxyPassReverse /mirror/foo/ http://outro.servidor.com/
Segurana num procurador
A configurao igual de qualquer outra pgina local, excepto que usa a etiqueta Proxy:
<Proxy *>
Order deny,allow
Deny from all
Allow from .examplo.com
</Proxy>
Encadear procuradores
possvel direccionar os pedidos do procurador Apache para outro procurado utilizando o comando
ProxyRemote:
ProxyRemote match scheme://hostname[:port]
possvel redireccionar tudo, um protocolo, ou ter procuradores especficos para uma pginas:
ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
ProxyRemote * http://cleversite.com
ProxyRemote ftp http://ftpproxy.mydomain.com:8080
Utilizando o comando NoProxy possvel desactivar a utilizao de um procurador remoto para algumas
pginas:
NoProxy host [host] ...
Os dois comandos so usados geralmente encadeados:
ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21 172.16.33 // Deactiva o procurador por
nome ou por endereo IP
Caching
Ver mais informaes.
H muito mais a dizer sobre o servio web do que o que aparece neste documento. Muito mais haveria a
dizer sobre o Apache, e os mltiplos mdulos que o compem, incluindo o suporte de pginas dinmicas
(CGI, PHP, JSP, Perl, etc.). O Apache o servidor web de referncia, mas nenhuma apresentao ficaria
completa sem focar o squid, o software de proxy web mais usado. Convida-se os alunos a lerem mais sobre
estes assuntos ...
14/7/2014 Demonstrao de Apache
http://tele1.dee.fct.unl.pt/rit2_2012_2013/demos/demo_apache.html 8/8
5. Exerccio
Configure o servidor Apache na sua mquina local de maneira a satisfazer os seguintes requisitos:
suportar dois servidores virtuais (em www1.pcXX.rit2.pt e www2.pcXX.rit2.pt), tanto para IPv4
como para IPv6, onde pcXX representa a rea de login do grupo. Modifique a configurao do
servidor DNS acrescentado os dois nomes DNS usados neste exerccio.
O servidor www1 deve ter a pgina habitual que existe na directoria /home/rit2/www; o servidor
www2 deve ter o acesso a uma directoria segura com um contedo ao seu gosto, protegida com uma
password.
funcionar como proxy convencional para todas as pginas externas ao laboratrio redireccionando os
pedidos para o proxy do campus da fct (proxy.fct.unl.pt:8080). O proxy deve ter o acesso restrito,
protegido por uma password.

También podría gustarte