Apache 2.4: Opções + Índices dentro do VirtualHost

1

Estou tendo problemas para fazer o Apache regonizar uma diretiva Options dentro de um bloco do VirtualHost. O trecho a seguir é o mais simples possível para reproduzir o erro - o restante da configuração é um Deiban Apache 2.4 em estoque.

<VirtualHost *:80>
        ServerName example
        DocumentRoot /home/test/ #owner www-data:www-data
        Options +Indexes
        <Location />
                Require all granted
        </Location>
</VirtualHost>

Isso falhará com o 403 Forbidden e a seguinte linha no log correspondente:

[Sun Jun 26 15:06:30.378689 2016] [autoindex:error] [pid 15899:tid 140693629712128] [client 192.168.0.155:52850] AH01276: Cannot serve directory /home/test/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

No entanto, colocar a diretiva Options +Indexes dentro do contêiner <Location /> corrigirá o erro e o índice gerado automaticamente será exibido.

Gostaria de saber por que deve ser colocado dentro de <Location /> para que funcione, em vez de apenas <VirtualHost> . Os documentos do Apache 2.4 dizem que a diretiva Options pode ser colocada no seguinte contexto [ 1]

Context: server config, virtual host, directory, .htaccess

Então, por que não está funcionando dentro de VirtualHost ?

Editar # 1

Saída de apachectl -S

AH00557: apache2: apr_sockaddr_info_get() failed for garnet
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80                   garnet.cat (/etc/apache2/sites-enabled/test.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex watchdog-callback: using_defaults
Mutex proxy: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Em relação a outras possíveis diretivas Options em algum outro lugar nos arquivos de configuração:

Não consegui encontrar nenhum. Eu usei root@garnet:/etc/apache2# grep -P -Rni '\soptions\s' . para encontrar ocorrências da diretiva Options nos arquivos de configuração. Todas as correspondências estavam em cadeias de comentários ou em <Directory> blocos não relacionados. Independentemente disso, o bloco VirtualHost não substitui as diretivas especificadas fora dele ?

    
por Nubarke 26.06.2016 / 17:40

1 resposta

0

Isso pode muito bem ser um problema de mesclagem, detalhes aqui: link

Portanto, em geral, as seções de configuração mais específicas da linha Directory e Location location podem substituir a configuração no nível do Host Virtual, o que, por sua vez, pode substituir a configuração no nível global. Mas quando você chegar aos blocos mais específicos da configuração, como eles são tratados no link acima.

Estes níveis são chamados de contextos em termos do Apache e é uma boa idéia familiarizar-se com o significado do contexto neste contexto, er ... well ... context :-). Mais informações aqui: link

Conforme mencionado nos comentários, observe no contexto global%%%, Location blocos que podem corresponder ao seu caminho URI ou LocationMatch ou Directory que pode corresponder a DirectoryMatch ou qualquer coisa acima dele no diretório árvore.

    
por 01.10.2016 / 11:23