Ich habe einige Sites, die mit Apache als VirtualHosts konfiguriert wurden und seit einiger Zeit einwandfrei funktionieren. Ich habe kürzlich den Hostnamen des Servers in einen der Domänennamen geändert, die bereitgestellt wurden, und ihn auch zu / etc / hosts hinzugefügt, die auf die externe IP-Adresse des Servers verweisen.
Seitdem habe ich durch den Zugriff auf die Domain von meinem Laptop aus Apaches Standard "Es funktioniert!" Seite. Wenn ich 000-default aus / etc / apache2 / sites-enabled / entferne, wird die richtige Site angezeigt. Der Versuch, mit dem 'www' auf die Site zuzugreifen. Das Präfix führt mich zur richtigen Site, unabhängig davon, ob 000-default in Sites aktiviert ist oder nicht.
Aufgrund all dessen schätze ich, dass die Standardkonfiguration die Standardseite bereitstellt, da ich den Hostnamen oder / etc / hosts (oder beides) konfiguriert habe, aber ich kann nicht herausfinden, wie ich das währenddessen deaktivieren kann Belassen Sie diese Einstellungen unverändert. Anregungen willkommen!
Bearbeiten - Meine aktuelle VirtualHost-Konfiguration sieht folgendermaßen aus:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin [email protected]
DocumentRoot /srv/www/domain
ErrorLog /srv/www/domain/logs/error.log
CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>
Zusammenfassend: Ich habe mehrere VirtualHosts eingerichtet, und dies ist die einzige, die nicht richtig funktioniert. Ich kann problemlos auf http://www.domain.com zugreifen , aber http://domain.com bringt mich zu Apaches Standard "Es funktioniert!" Seite. Wenn ich die 000-Standardkonfiguration deaktiviere, wird die richtige Seite angezeigt. Dies begann erst, nachdem ich den Hostnamen des Servers auf domain.com festgelegt und eine Zeile zu / etc / hosts hinzugefügt hatte, die domain.com auf die externe IP-Adresse des Servers verweist. Ich würde diese gerne so lassen, wenn es möglich ist.
Bearbeiten: Ich lief apache2ctl -S
seitdem /usr/sbin/apache2 -S
gab mir "apache2: falscher Benutzername $ {APACHE_RUN_USER}". Hier ist die Ausgabe:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK
quelle
Antworten:
Ich habe diese Frage neulich verloren.
Wenn Sie einen <VirtualHost> -Container ohne ServerName-Komponente haben, wird der Standardhostname verwendet. Da 000-default wahrscheinlich keine ServerName-Komponente hat und als erstes alphabetisch aufgenommen wird, antwortet es auf hostname.com und lässt nicht zu, dass Ihr explizit deklarierter Hostname funktioniert.
quelle
ServerName example.com
in der Standardkonfiguration funktioniert jedoch hervorragend. Vielen Dank!Haben Sie irgendwo eine NameVirtualHost *: 80-Direktive?
Versuchen:
Das zeigt Ihnen, wie Apache die Konfigurationsdatei analysiert. Haben Sie Konfigurationen mit tatsächlichen IPs oder alle mit dem *? Vermissen Sie die: 80? Apache mischt diese nicht gern.
Haben Sie standardmäßig einen Servernamen domain.com oder ServerAlias domain.com?
quelle
Überprüfen Sie ServerName und ServerAlias in der VirtualHost-Direktive:
Lesen Sie: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias , http://httpd.apache.org/docs/2.2/vhosts/
quelle
Das hat funktioniert:
Wenn ich einen Tippfehler hatte, funktionierte er NICHT (die ServerName-Direktive zweimal):
Wenn ich die ServerName-Direktive zweimal hatte, wurde sie immer wieder auf die erste aufgelistete Site aufgelöst (hier nicht gezeigt).
hoffe das hilft jemandem ...
quelle
Ich hatte ein ähnliches Problem und habe es behoben, indem ich explizit einen Servernamen in der Hauptdatei httpd.conf festgelegt habe, anstatt Apache automatisch herausfinden zu lassen, dass dies der Fall ist. Ich gehe davon aus, dass das, was Apache entschieden hat, dasselbe war wie mein vhost (später definiert), so dass der Standard "gewonnen" wurde und die vhost-Einstellung überschrieb.
Ich habe gerade den httpd.conf-Servernamen auf einen Hostnamen gesetzt, den der Computer hat. Ich werde niemals Webseiten für bereitstellen.
quelle