我有一台配置为服务器 VHOST 的 LAMP 服务器。这里的问题是,当我尝试通过同一个 LAN 访问它时,我似乎尝试访问本地 IP 地址而不是 VHOST 地址。但是,当我尝试从外部访问服务器时,它会显示正确的 VHOST。我需要配置 apache 以某种方式为正确的站点而不是默认站点提供服务。我该怎么做?
这是我的两个 VHOST 条目的示例。
默认
<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>
另一个网站
<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>
答案1
这不是 apache 的错。VirtualHost 指令不适用于通过 IP 发出的请求。您访问站点的 LAN 中的计算机会检查 DNS 服务器并因此获取外部 IP。如果服务器位于同一网络上,则网络上的合适路由器应该可以正确解析/路由它,但有些路由器并不总是这样。
要测试这一点,请在客户端上为您的域添加自定义 DNS 条目,将其映射到服务器的内部 IP。/etc/hosts
如果客户端是 Linux 或C:\Windows\system32\drivers\etc\hosts
Windows 上的客户端,请编辑并添加以下内容(将 10.0.0.1 更改为服务器的内部 IP):
10.0.0.1 domain.com
更新:如果 DNS 解决方案有效,您可以做的是在内部网络上配置自定义 DNS 服务器,这将允许您设置自定义 DNS 条目。这样您就不需要在客户端上手动设置它了。