Virtual Host impedindo a diretiva de status do servidor

Virtual Host impedindo a diretiva de status do servidor

Na minha VM Ubuntu 16.4, configurei o Apache 2.4 com sucesso e tenho vários vhosts configurados. Quero ver o status do servidor, mas meu primeiro vhost continua impedindo isso. Eu li e reli os documentos do Apache 2.4 sobre isso. Coloquei o seguinte em meu /etc/apache2/apache.conf, depois em /etc/apache2/mods-enabled/status.conf e finalmente em /etc/apache2/sites-enabled/0firstvhost.conf

<Location "/server-status">
      SetHandler server-status
      Require ip 10.211.55.0/24
    </Location>

Ao ler muitas postagens sobre esse assunto nos documentos do Apache e no ServerFault, tentei muitas variações que são aplicáveis ​​ao Apache 2.4

Posso verificar se o mod_status está em execução vendo-o durante a execução

sudo apachectl -M | grep status

Claro, eu verifiquei o configtest do apachectl todas as vezes e reiniciei o serviço apache2 para ver se consigo navegar até 10.211.55.3/server-status, mas o aplicativo Drupal PHP continua interferindo. Não há .htaccess na raiz deste vhost.

Coloquei esta directiva dentro e fora da directiva.

Eu verifico um navegador no endereço IP da VM e também dentro da execução da VM

curl localhost/server-status
curl 10.211.55.3/server-status

O aplicativo Drupal é lido primeiro. O que tentar a seguir? obrigado, Sam

Responder1

Encontrei isto que sugeriuo .htaccess para o site padrão estava impedindo mod_statusde trabalhar. A solução deles não funcionou para mim, mas como estou trabalhando com hosts virtuais, eu poderia criar um host virtual sem um .htaccess. Eu adicionei um host arbitrário no arquivo /etc/hosts do Debian:

127.0.0.1  foo.org

Criei um diretório vazio entre meus outros hosts virtuais e criei um novo site e o habilitei.

<Directory /home/foo.org>
</Directory>
<Location /server-status>
    SetHandler server-status
    Require local
    Require ip 127.0.0.1
    Require ip ::1
</Location>

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName foo.org
</VirtualHost>

Então, no localhost eu posso ver os dados

curl foo.org/server-status

Responder2

Eu também tive o problema do meuHost Virtual /etc/sites-enabled/example.conflidando com solicitações para http://localhost/server-info, que eu realmente queria que fosse tratadomod_info.

# File /etc/sites-enabled/example.conf
<VirtualHost *:80>
  ServerName example.com
  
  # ...
</VirtualHost>

O problema foi IMHO que o Apache tem um comportamento padrão de manipulação de solicitação de fallback se alguma solicitação não corresponder a nenhuma configuraçãoHost VirtualdeNome do servidor(ver1,2). Comomod_infoarquivos de configuração padrão /etc/apache2/mods-available/info.loade /etc/apache2/mods-available/info.confnão especificam seus própriosHost VirtualeNome do servidor, acho que o substituto do Apache entrou em ação, tendo meuexemplo.conf VirtualHostlidar com a solicitação de http://localhost/server-info.

Resolvi o problema da seguinte maneira:

Crie um arquivo /etc/apache2/mods-available/localhost-server-info.load(percebermods-available). Isto é umcópia dedo original info.load:

LoadModule info_module /usr/lib/apache2/modules/mod_info.so

Crie um arquivo /etc/apache2/sites-available/localhost-server-info.conf(percebersites-available). Esta é uma adaptação do original info.conf, envolvendo seu conteúdo dentro de umHost Virtuale proporcionando umNome do servidor:

# Get mod_info information by requesting http://localhost/server-info
#
# Enable by executing
# service apache2 stop
# a2dismod info
# a2enmod localhost-server-info
# a2ensite localhost-server-info
# service apache2 start
#
# Disable by executing
# service apache2 stop
# a2dissite localhost-server-info
# a2dismod localhost-server-info
# service apache2 start

<IfModule mod_info.c>
  <VirtualHost *:80>
    # Adapt ServerName to your needs
    # Avoid ServerName collision with any other active VirtualHosts
    ServerName localhost

    <Location /server-info>
      SetHandler server-info
      # Adapt Require to your needs
      # Require local
      # Require ip 192.0.2.0/24
    </Location>
  </virtualHost>
</IfModule>

Desative o originalinformaçõesmódulo (caso ainda esteja habilitado) e habilite o novoinformações do servidor localhostmóduloesite:

service apache2 stop
a2dismod info
a2enmod localhost-server-info
a2ensite localhost-server-info
service apache2 start
  • http://example.com/server-infoagora deverá ser tratado peloexemplo.comVirtualHost (provavelmente mostrando uma página 404).
  • http://localhost/server-info agora deve ser tratado pormod_info.
  • http://127.0.0.1/server-infoe outros não configuradosNome do servidors devem ser tratados de acordo com o tratamento de fallback do Apache, por exemplo, no meu exemplo peloexemplo.comVirtualHost (provavelmente mostrando uma página 404).

informação relacionada