Ich habe einen LAMP-Server konfiguriert, der VHOSTs bedient. Das Problem dabei ist, dass ich beim Versuch, über dasselbe LAN darauf zuzugreifen, anscheinend versuche, auf die lokale IP-Adresse und nicht auf die VHOST-Adresse zuzugreifen. Wenn ich jedoch versuche, von außerhalb auf den Server zuzugreifen, wird der richtige VHOST angezeigt. Ich muss Apache so konfigurieren, dass es irgendwie die richtige Site und nicht die Standardsite bedient. Wie mache ich das?
Hier ist ein Beispiel für zwei meiner VHOST-Einträge.
Standard
<VirtualHost *:80>
ServerAdmin [email]
ServerName eresk.fi
DocumentRoot /home/web/apache-webserver/public_html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/web/apache-webserver/public_html/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/web/apache-webserver/cgi-bin/
<Directory "/home/web/apache-webserver/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Eine andere Seite
<VirtualHost *:80>
ServerAdmin [email]
ServerName diggety.net
ServerAlias *.diggety.net
DocumentRoot /home/web/diggety/public_html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/web/diggety/public_html/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/web/diggety/cgi-bin/
<Directory "/home/web/diggety/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
<IfModule php5_mod.c>
php_value session.gc_maxlifetime 604800
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/error_diggety.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_diggety.log combined
</VirtualHost>
Antwort1
Dies ist nicht die Schuld von Apache. VirtualHost-Anweisungen funktionieren nicht für Anfragen über IP. Der Computer in Ihrem LAN, von dem aus Sie auf die Site zugreifen, überprüft DNS-Server und erhält als Ergebnis eine externe IP. Wenn sich der Server im selben Netzwerk befindet, sollte ein geeigneter Router in Ihrem Netzwerk ihn ordnungsgemäß auflösen/weiterleiten, dies ist jedoch bei einigen Routern nicht immer der Fall.
Um dies zu testen, fügen Sie auf einem Client einen benutzerdefinierten DNS-Eintrag für Ihre Domäne hinzu, der sie der internen IP Ihres Servers zuordnet. Bearbeiten Sie, /etc/hosts
ob der Client Linux ist oder C:\Windows\system32\drivers\etc\hosts
ob er Windows verwendet, und fügen Sie Folgendes hinzu (ändern Sie 10.0.0.1 durch die interne IP Ihres Servers):
10.0.0.1 domain.com
Aktualisieren: Wenn die Lösung mit DNS funktioniert, können Sie einen benutzerdefinierten DNS-Server in Ihrem internen Netzwerk konfigurieren, der es Ihnen ermöglicht, benutzerdefinierte DNS-Einträge festzulegen. Auf diese Weise müssen Sie dies auf den Clients nicht manuell festlegen.