Servindo um conteúdo fora do diretório diferente do diretório DocumentRoot com Apache2
Esta configuração mostrará um exemplo básico de como servir um conteúdo fora de um diretório diferente do diretório DocumentRoot
usando o servidor web Apache2. Vamos começar com uma configuração simples de host virtual.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<VirtualHost>
A configuração VirtualHost
acima servirá um conteúdo do diretório DocumentRoot
. Vamos criar uma página básica para confirmar nossas configurações:
# echo "Serving content from /var/www/html" > /var/www/html/index.html
Ao acessar o servidor web disponível obtemos o seguinte conteúdo:
$ curl http://localhost/
Serving content from /var/www/html
O documento HTML fornecido foi carregado do diretório DocumentRoot
/var/www/html
.
Se quisermos servir também um conteúdo de outro diretório, então o diretório DocumentRoot
/var/www/html
podemos criar um alias
adicional. Aqui está o novo arquivo de configuração VirtualHost
que além de /var/www/html
também servirá um conteúdo de /opt/www/
usando um Sufixo de alias de URL /opt/
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias "/opt/" "/opt/www/"
<Directory "/opt/www/">
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<VirtualHost>
Salve sua nova configuração e recarregue o servidor web Apache:
# service apache2 reload
[ ok ] Reloading web server: apache2.
Em seguida, crie uma página simples dentro do diretório alias /opt/www/
:
# echo "Serving content from /opt/www/" > /opt/www/index.html
Acessar nosso servidor web usando um sufixo de URL de alias /opt/
servirá um conteúdo do diretório /opt/www
:
$ curl http://localhost/opt/
Serving content from /opt/www/
Solução de problemas
O 404 Not Found
geralmente significa que você está tentando acessar um conteúdo inexistente ou forneceu uma URL incorreta. Cuidado com um /
final em seu URL, pois http://localhost/opt
e http://localhost/opt/
são dois nomes distintos URLs. Se você não deseja que seu URL inclua o caractere /
final, você precisará remover ambos os caracteres /
finais da diretiva Alias
acima do seu Configuração do >VirtualHost
.
O log de erros AH01630: cliente negado pela configuração do servidor
indica acesso negado devido ao controle de acesso configurado incorretamente. Para versões do servidor web Apache abaixo de 2.4, pode ser necessário alterar seu controle de acesso para:
<Directory "/opt/www/">
Order allow,deny
Allow from all
</Directory>