Habe die Apache-Site-Konfigurationsdatei 000-default.conf deaktiviert, aber sie scheint immer noch aktiv zu sein. Warum?

7

Ich habe meinem Ordner für Apache-Sites eine Datei mysite.conf mit den richtigen Einstellungen hinzugefügt, sie dann aktiviert und Apache neu geladen, und sie funktioniert nicht. Ich möchte die in 000-default.conf definierte Standard-Site-Konfiguration deaktivieren, um festzustellen, ob das Problem dadurch behoben wird.

Um dies zu erreichen, lief ich:

cd /etc/apache2/sites-available/
sudo a2dissite 000-default.conf
service apache2 reload

und alles schien in Ordnung zu sein, aber wenn ich mysite.com in meinen Browser lade, sehe ich immer noch die Standarddatei index.html in / var / www / html / (wie in 000-default.conf angegeben), obwohl ich habe die Site-Konfigurationsdatei für meine Domain wie folgt aktiviert:

<VirtualHost *:80>
        ServerName www.mysite.com
        ServerAlias mysite.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/mysite.com

        ErrorLog ${APACHE_LOG_DIR}/error_mysite.log
        CustomLog ${APACHE_LOG_DIR}/error_access_mysite.log combined

</VirtualHost>

Ich habe eine Datei /var/www/mysite.com/index.php, von der ich erwarte, dass sie stattdessen geladen wurde.

Sehr unregelmäßig
quelle
1
Okay. Warum spielst du mit 000-default.conf? Was versuchst du zu machen? Haben Sie einen Standort zum Bereitstellen oder mehrere? Es ist nicht ratsam, Ihre Standardwebsite durcheinander zu bringen. Es ist zumindest eine Sammelstelle, die für die Sicherheit verwendet wird. Was willst du wirklich machen ????
Closetnoc
@closetnoc Eine Site derzeit, möchte jedoch Subdomains oder andere Domains verwenden, um mehr als eine zu haben. Ich möchte im Grunde nur eine andere Dokumentwurzel für jede Site. Ich dachte, es könnte eine Anforderung sein, die 000-default.conf zu deaktivieren, damit meine Site mit der angegebenen Dokumentwurzel funktioniert, aber von dem, was Sie sagen, wahrscheinlich nicht.
Sehr unregelmäßig
1
Sie möchten die 000-default.conf NICHT deaktivieren. Wie greifen Sie auf den Webserver zu? Über einen Domainnamen? Oder IP-Adresse oder Computername.
Closetnoc
@closetnoc Ja, über meinen Domainnamen mysite.com, aber es wird /var/www/html/index.html geladen und nicht /var/www/mysite.com/index.php
Sehr unregelmäßig
Ich bin mir sicher, dass es auf den verfügbaren Websites keine conf-Datei für mysite.com gibt. Die Site 000-default.conf ist ein Sammelbegriff für alle Anforderungen, für die der Server keine Konfigurationsdatei hat. Wenn Sie einen Domainnamen haben und die Auflösung in Ordnung ist, sollte die Anfrage nach dem Domainnamen lauten. Wenn für diesen Domänennamen keine Konfiguration vorhanden ist, wird die von Ihnen gewünschte Standardeinstellung verwendet . Es ist eine Sicherheitsmaßnahme. Sie müssen eine Konfigurationsdatei für Ihre Site erstellen.
Closetnoc

Antworten:

9

Nur zur Erklärung für zukünftige Benutzer.

Ihre 000-default.conf-Datei ist eine Sammel-Site und sollte in Ruhe gelassen werden. Es ist gut für die Sicherheit. Es kann frustrierend sein, wenn eine Site-Konfiguration nicht funktioniert und die Standard-Site bereitgestellt wird. Ich verstehe es. Lass es trotzdem in Ruhe. Vielen Menschen ist nicht bekannt, warum die Standardwebsite vorhanden ist. Hier ist eine kleine Erklärung.

Wenn Apache eine Anfrage empfängt, versucht es, sie einer ihm bekannten Konfiguration zuzuordnen. Daher sucht jede Anfrage nach example.com nach einer example.com.conf mit einer geeigneten Konfiguration. Wenn keine Übereinstimmung vorliegt, wird die Site 000-default.conf verwendet. Wenn eine Anforderung für bogussite.com angezeigt wird und auf dem Server nicht vorhanden ist, wird die Datei 000-default.conf bereitgestellt. Dies ist besonders nützlich für Anfragen nur nach IP-Adressen. Und wir alle hassen die !! Wenn jedoch in example.com.conf ein Fehler auftritt, ist es immer noch möglich, dass die Site 000-default.conf bereitgestellt wird, wobei der genaue Grund, warum und wie die Konfiguration fehlschlägt, etwas verwirrend und sehr frustrierend ist.

Ich habe hier einige Beispielkonfigurationen von einem Live-Server angegeben: Virtualhost-Konfiguration: Routing und Platzhalterverwendung

Push kommt zu schieben, diese sollten immer funktionieren. Sie können sie genau ausschneiden und einfügen, dann die erforderlichen Änderungen vornehmen oder Ihre vorhandenen Dateien ändern. Ihre Option. Es ist leicht, die Augen zu verschränken, seien Sie also vorsichtig. Wir haben es alle getan, damit Sie nicht allein sind.

@HighlyIrregular macht diesen Punkt in seinen Kommentaren, die leben sollten.

Sie können die Konfiguration in einer Shell-Sitzung jederzeit mit ...

$ apachectl configtest

... was bei der Behebung von Problemen helfen sollte.

Sie müssen Ihre neuen / zusätzlichen Sites in Ihrem /etc/apache2/site-available/Verzeichnis in einem ähnlichen Dateiformat wie erstellen example.com.conf. Sie wollen auch sicherstellen , dass /etc/apache2/apache2.confhat Include sites-enabled/etwas ähnliches wie eine der letzten Zeilen oder.

Wenn eine Konfigurationsdatei geändert wird, muss Apache neu gestartet werden. Apache speichert Konfigurationen im Speicher zwischen und Änderungen werden erst nach einem Neustart angezeigt. In seltenen Fällen funktioniert ein Neustart nicht wie erwartet. In diesem Fall sollten Sie Ihren Server neu starten, um dies als Problem auszuschließen. Es ist sehr wahrscheinlich, dass beim Neustart keine gültigen Konfigurationen angezeigt werden. Nicht sicher warum. Bei einem Neustart muss Apache die Konfigurationsdateien jedoch erneut zwischenspeichern. Es ist wie ein größerer Hammer. Manchmal einen Versuch wert.

Schranknoc
quelle
2
Vielen Dank für Ihre Hilfe! Ein Neustart des Servers hat es in meinem Fall behoben (beim Neustart von Apache nicht). Für andere Benutzer ist es auch erwähnenswert, dass der Befehl apachectl configtestzum Erkennen von Apache-Konfigurationsfehlern nützlich ist (verwenden Sie ihn, bevor Sie Apache neu laden / neu starten).
Sehr unregelmäßig
Ich bin froh, dass alles geklappt hat. Es ging nur darum, den richtigen Hammer zu benutzen !!
Closetnoc
@HighlyIrregular Ich habe Ihren Vorschlag zur Antwort hinzugefügt ... es war ein guter Vorschlag, der wirklich jeden Kommentar überleben sollte, der mit der Zeit verschwinden kann. Vielen Dank! Ich vergesse diese Option und gehe die meiste Zeit Kommando .
Closetnoc
Übrigens: Ich habe gerade Ihr Profil gelesen. Ich dachte, das könnte von Interesse sein: careers.stackoverflow.com Nur für den Fall, dass Sie es nicht wussten ... Prost !!
Closetnoc
Was ist also, wenn ich meinen Apache auf einem lokalen Server im Netzwerk ausführe und über IP darauf zugreife, nicht mit dem herumspielen möchte, 000-default.confwie Sie es empfehlen, sondern es trotzdem so mache, dass ein Browser zur IP des lokalen Servers navigiert wird einer der alternativen virtuellen Hosts ( example.conf) anstelle des Standardhosts angezeigt? Ich glaube, ich suche nach einer DefaultVirtualHost = ...Richtlinie, bin mir aber nicht sicher, ob sie existiert oder wie ich sonst vorgehen soll, wenn. Im Moment habe ich den example.confPort 8080aktiviert. Wenn ich ihn also auf die IP gehe, komme ich zu der gewünschten Seite. Keine schöne Lösung.
Domsson
2

Ich stimme dem Benutzer'schranknoc 'zu, der um [2015-Aug-2 00: 24: 36Z] auf den ursprünglichen Beitrag geantwortet hat, in dem stand: "Die 000-default.confSite ist ein Sammelbegriff für jede Anfrage, für die der Server keine Konfigurationsdatei hat ".

Und ich denke, wir können diese "Sammelstelle" als letzten Ausweg nutzen, um die allgemeine Sicherheit zu schützen und zu verbessern.

Ich habe immer noch versucht, die Site ' 000-default.conf' zu aktivieren, aber ihre Konfiguration ein wenig anders zu gestalten, als ALLE Anfragen ohne Senden einer Antwort ständig zu löschen und dann sofort die Verbindung für alle verbotenen Zugriffe zu schließen, damit nichts geantwortet wird Ich habe es dem versuchenden Antragsteller mitgeteilt.

Hier ist meine ' 000-default.conf' Datei als Referenz:

<VirtualHost *:80>
    # ServerName whatsoever
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/default_error.log
    CustomLog ${APACHE_LOG_DIR}/default_access.log combined

    <Location />
        <RequireAny>
            # Example for 'Block all':
            # Require ip 0.0.0.0/32
            Require all denied

            # Example for 'White list':
            # Require ip 172.217.24.37/32
        </RequireAny>
    </Location>

    SecRuleEngine On
    SecRule RESPONSE_STATUS "403" "phase:4,id:1,drop"
</VirtualHost>

Denken Sie daran, das ModSecurityModul ' ' zu installieren, damit die Anweisungen ' SecRuleEngine' und ' SecRule' akzeptiert werden können. Wenn Sie zusätzliche Unterstützung und Referenz zum Thema ' ModSecurity' Modul benötigen , schlagen Sie vor, im Internet zu suchen.

Hoffe das obige hilft!

kman
quelle