Virtueller Host, der die Serverstatusanweisung verhindert

Virtueller Host, der die Serverstatusanweisung verhindert

In meiner Ubuntu 16.4 VM habe ich Apache 2.4 erfolgreich eingerichtet und mehrere virtuelle Hosts eingerichtet. Ich möchte den Serverstatus sehen, aber mein erster virtueller Host verhindert das ständig. Ich habe die Apache 2.4-Dokumente dazu gelesen und noch einmal gelesen. Ich habe Folgendes in meine /etc/apache2/apache.conf, dann in /etc/apache2/mods-enabled/status.conf und schließlich in /etc/apache2/sites-enabled/0firstvhost.conf eingefügt.

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

Beim Lesen vieler Beiträge zu diesem Thema in den Apache-Dokumenten und bei ServerFault habe ich viele Variationen ausprobiert, die auf Apache 2.4 anwendbar sind.

Ich kann überprüfen, ob mod_status ausgeführt wird, indem ich es beim Ausführen sehe

sudo apachectl -M | grep status

Natürlich habe ich jedes Mal den apachectl-Konfigurationstest überprüft und den Apache2-Dienst neu gestartet, um zu sehen, ob ich zu 10.211.55.3/Server-Status navigieren kann, aber die Drupal-PHP-App stört ständig. Es gibt keine .htaccess im Stammverzeichnis dieses virtuellen Hosts.

Ich habe diese Richtlinie innerhalb und außerhalb der Richtlinie platziert.

Ich prüfe einen Browser unter der IP-Adresse der VM und führe auch innerhalb der VM aus

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

Die Drupal-App wird zuerst gelesen. Was soll ich als nächstes versuchen? Danke, Sam

Antwort1

Habe das hier gefunden, was darauf hindeutetdie .htaccess für die Standard-Site verhinderte mod_statusvon der Arbeit ab. Ihre Lösung hat bei mir nicht funktioniert, aber da ich sowieso mit virtuellen Hosts arbeite, konnte ich einen virtuellen Host ohne .htaccess erstellen. Ich habe einen beliebigen Host in Debians /etc/hosts-Datei hinzugefügt:

127.0.0.1  foo.org

Ich habe unter meinen anderen virtuellen Hosts ein leeres Verzeichnis erstellt, eine neue Site erstellt und aktiviert.

<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>

Auf dem lokalen Host kann ich die Daten sehen

curl foo.org/server-status

Antwort2

Ich hatte auch das Problem meinerVirtueller Host /etc/sites-enabled/example.confBearbeitung von Anfragen für http://localhost/server-info, die ich eigentlich vonmod_info.

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

Das Problem war meiner Meinung nach, dass Apache ein standardmäßiges Fallback-Anforderungsbehandlungsverhalten hat, wenn eine Anforderung nicht mit einer konfigurierten übereinstimmtVirtueller Host'SServername(sehen1,2). Alsmod_infoStandardkonfigurationsdateien /etc/apache2/mods-available/info.loadund /etc/apache2/mods-available/info.confgeben Sie keine eigenen anVirtueller HostUndServername, ich denke, Apaches Fallback hat gegriffen, da meinbeispiel.conf VirtualHostBehandeln Sie die Anforderung für http://localhost/server-info.

Ich habe das Problem folgendermaßen behoben:

Erstellen Sie eine Datei /etc/apache2/mods-available/localhost-server-info.load(beachtenmods-available). Das ist einKopierendes Originals info.load:

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

Erstellen Sie eine Datei /etc/apache2/sites-available/localhost-server-info.conf(beachtensites-available). Dies ist eine Adaption des Originals info.conf, wobei der Inhalt in einVirtueller Hostund Bereitstellung einerServername:

# 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>

Deaktivieren Sie die Originaldie InfoModul (falls es noch aktiviert ist) und aktivieren Sie das neueLocalhost-Server-InformationenModulUndWebsite:

service apache2 stop
a2dismod info
a2enmod localhost-server-info
a2ensite localhost-server-info
service apache2 start
  • http://example.com/server-infosollte nun von derexample.comVirtualHost (zeigt wahrscheinlich eine 404-Seite).
  • http://localhost/server-info sollte nun verwaltet werden vonmod_info.
  • http://127.0.0.1/server-infound andere nicht konfigurierteServernames sollten gemäß Apaches Fallback-Handling behandelt werden, z. B. in meinem Beispiel durch denexample.comVirtualHost (zeigt wahrscheinlich eine 404-Seite).

verwandte Informationen