Frage Apache2 VirtualHost mit dem gleichen Namen wie der Computer


Ich verwende Debian Server mit kanonischem Namen (definiert in /etc/hostname und umgekehrt DNS) server.example.com

root @ server: ~ # uname -a
  Linux server.example.com 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU / Linux

Apache / 2.4.10 (Debian) Server unter server.example.com Port 80

Jetzt habe ich apache2 installiert und einige grundlegende Konfigurationen vorgenommen. Dann habe ich VirtualHosts hinzugefügt /etc/apache2/sites-available mit Symlinks in sites-enabled. Alles funktioniert gut außer VirtualHost mit ServerName server.example.com. Wenn ich versuche, auf diesen URI im Explorer zuzugreifen, erhalte ich den Inhalt des virtuellen Standardhosts (mit keinem ServerName spezifizierten). Wenn ich mich ändere server.example.com.confServerName zu etwas anderem (wie test.example.com) und Apache-Konfiguration neu laden, dann kann ich problemlos zum URI gelangen. Ich würde gerne wissen, was bei VirtualHosts falsch ist ServerName Derselbe Name wie der kanonische Name der Maschine.

Außerdem, server.example.com.conf hat DocumentRoot /var/www/subs/server was beinhaltet index.html und munin Mappe. Standard VirtualHost hat DocumentRoot /var/www/html was hat keine munin Ordner darin. Allerdings, wenn ich versuche zuzugreifen http://server.example.com/munin Ich kann reinkommen /var/www/subs/server/munin, während http://server.example.com/index.html bringt mich /var/www/html/index.html.

Zu guter Letzt, als ich es setzte Redirect 404 / im Standard-VirtualHost, werde ich bekommen 404 wenn ich versuche auf beide zuzugreifen http://server.example.com/ und http://server.example.com/munin

Konfiguration von VirtualHosts hinzugefügt

/etc/apache2/sites-available/forum.example.com.conf :

# Working subdomain configuration
<VirtualHost *:80>
        ServerName forum.example.com
        ServerAdmin zereges@example.com
        DocumentRoot /var/www/subs/forum
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/etc/apache2/sites-available/server.example.com.conf :

# Not working server.example.com configuration
<VirtualHost *:80>
        ServerName server.example.com
        ServerAdmin zereges@example.com
        DocumentRoot /var/www/subs/server
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/etc/apache2/sites-available/default.conf :

# Default VirtualHost configuration 
<VirtualHost *:80>
        ServerAdmin zereges@example.com
        DocumentRoot /var/www/html
        #Redirect 404 /
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

root @ server: ~ # apache2ctl -t
  Syntax OK


Hinzugefügt von  root@server:~# apache2 -S

[Tue Aug 11 11:07:32.705684 2015] [core:warn] [pid 20215] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Tue Aug 11 11:07:32.706119 2015] [core:warn] [pid 20215] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Tue Aug 11 11:07:32.706250 2015] [core:warn] [pid 20215] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Tue Aug 11 11:07:32.706406 2015] [core:warn] [pid 20215] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Tue Aug 11 11:07:32.706566 2015] [core:warn] [pid 20215] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
(... repeating few more times)
[Tue Aug 11 11:07:32.744292 2015] [core:warn] [pid 20215] AH00111: Config variable ${APACHE_LOG_DIR} is not defined

AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

Während,

/etc/apache2/apache2.conf:74:Mutex file:${APACHE_LOCK_DIR} default
/etc/apache2/envvars:21:export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX


Nach dem Rennen /etc/apache2/envvar Ich bekomme das durch Ausführen apache2 -S

VirtualHost configuration:
*:80     is a NameVirtualHost
         default server server.example.com (/etc/apache2/sites-enabled/default.conf:1)
         port 80 namevhost server.example.com (/etc/apache2/sites-enabled/default.conf:1)
         port 80 namevhost download.example.com (/etc/apache2/sites-enabled/download.example.com.conf:1)
         port 80 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:1)
                 alias www.example.com
         port 80 namevhost forum.example.com (/etc/apache2/sites-enabled/forum.example.com.conf:1)
         port 80 namevhost forumold.example.com (/etc/apache2/sites-enabled/forumold.example.com.conf:1)
         port 80 namevhost forumtest.example.com (/etc/apache2/sites-enabled/forumtest.example.com.conf:1)
         port 80 namevhost mail.example.com (/etc/apache2/sites-enabled/mail.example.com.conf:1)
         port 80 namevhost ro.example.com (/etc/apache2/sites-enabled/ro.example.com.conf:1)
         port 80 namevhost server.example.com (/etc/apache2/sites-enabled/server.example.com.conf:1)
         port 80 namevhost anotherexample.com (/etc/apache2/sites-enabled/anotherexample.com.conf:1)
                 alias www.anotherexample.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: 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

5
2017-08-05 10:35


Ursprung


Bitte posten Sie hier die relevanten Abschnitte Ihrer Apache-Konfiguration (die Gesamtheit der einzelnen <virtualhost> -Richtlinien). Zusätzlich bitte die Ausgabe von httpd -t und überprüfen Sie das Apache-Fehlerprotokoll auf relevante Fehler. - Gene
Die Ausgabe von apache2 -Swäre wahrscheinlich lehrreich. - womble♦
@womble Ich habe meine Frage bearbeitet. - Zereges
Und diese Information, kombiniert mit der Antwort von @ covener, sollte alles sein, was Sie brauchen, um Ihr Problem zu lösen. - womble♦


Antworten:


Bei Debian-basierten Distributionen gibt der Standard-virtualhost überhaupt keinen Servernamen an, was bedeutet, dass er am Ende mit dem Hostnamen des Systems als ServerName endet.

Da es zuerst aufgeführt wird, wird es jeden späteren vhost mit demselben Servernamen verdecken.

Ich würde vorschlagen, den mitgelieferten virtuellen Standardhost zu deaktivieren und Ihren eigenen hinzuzufügen, der einen Servernamen angibt, aber nicht den Servernamen verwendet, an dem Sie interessiert sind.


2
2017-08-09 13:57



Ich habe meine Frage so bearbeitet, dass sie mehr dem ähnelt, wie sie aussieht. - Zereges


Von apache-doc:  Wenn kein ServerName angegeben ist, versucht der Server, den Hostnamen durch eine umgekehrte Suche nach der IP-Adresse abzuleiten. Wenn im ServerName kein Port angegeben ist, verwendet der Server den Port der eingehenden Anfrage. Für eine optimale Zuverlässigkeit und Vorhersagbarkeit sollten Sie einen expliziten Hostnamen und Port mit der ServerName-Direktive angeben.

+

Im Wesentlichen wird der Hauptserver als "Standard" oder als "Basis" behandelt, auf der jeder vhost aufbauen soll. Aber die Positionierung dieser Hauptserverdefinitionen in der Konfigurationsdatei ist weitgehend irrelevant - die gesamte Konfiguration des Hauptservers wurde analysiert, wenn diese endgültige Zusammenführung erfolgt. Selbst wenn eine Hauptserverdefinition nach einer vhost-Definition angezeigt wird, kann dies die vhost-Definition beeinflussen.


0
2017-08-07 14:59



Ich dachte, dass ich die Konfiguration als Standard festlegen kann, indem ich gehe ServerName nicht definiert. Wie definiere ich die Konfiguration für den standardmäßigen virtuellen Host? - Zereges
Sie haben also eine Reihe von VirtualHost-Tags mit *:80. Die erste davon ist der Standardwert für diese Gruppe. Wenn Sie das für some VirtualHosts anders angeben (z. *:443), dann existiert ein anderer Standard für diese Gruppe von VirtualHosts. Es ist üblich, eine Namenskonvention zwischen Dateien in Ihrem zu verwenden /etc/apache2/sites-enabled Verzeichnis oder Äquivalent, so dass die erste nach lexikalischer Reihenfolge Ihr Standard-Host ist. - mc0e
@ mc0e Ich habe meine Frage so bearbeitet, dass sie mehr aussieht wie sie aussieht. - Zereges