我有一个带有 vhosts conf 的服务器,如下所示:
NameVirtualHost *:80
# My Virtual Hosts:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain
DirectoryIndex index.php index.html
DocumentRoot /var/www/domain/public
# Custom log file locations
LogLevel warn
ErrorLog /var/www/domain/log/error_log
CustomLog /var/www/domain/log/access_log combined
<Directory "/var/www/dailysongfix/public">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
一个典型的虚拟主机会议对吗?好吧,我还需要在服务器上开发一些其他站点,这些站点还没有与它们挂钩的域。如果没有指向它们的域,我如何查看它们?我猜可能是 IP 地址和端口,但不确定如何设置。
如果要使用命名虚拟主机,则需要为服务器分配一些名称。在您的示例中,主机将由名称
domain
(来自ServerName domain
指令)寻址。您可以尝试通过执行类似的操作直接通过 IP 地址联系您的服务器,http://123.45.67.89/
但这不会导致 Apache 触发命名的虚拟主机。为此,您需要/etc/hosts
在客户端上的文件中添加如下内容:然后,您应该可以
http://domain/
在浏览器中使用。这会在本地设置名称和 IP 地址之间的映射,而不必与 DNS 混淆。其工作方式是当浏览器向服务器发送 HTTP 请求时,它会
//
在标头中的 URL之后包含它使用的任何文本Host:
。Apache 在标头中获取此文本,并将其与每个命名虚拟主机中的值进行Host:
匹配。ServerName
当它找到匹配项时,它会将其用作服务器来处理请求的其余部分。Apache不需要查找主机名和 IP 地址之间的映射,这就是为什么如果您只更改客户端计算机配置就可以工作的原因。使用“别名”而不是 VirtualHost,如果您的 PHP 应用程序不需要固定的 URL,它应该可以正常工作。
编辑:您可以将别名添加到上面粘贴的配置中,只需将它们添加到容器之前。
也许不是最好的方法,但你总是可以这样做:
我知道我知道-这不完全是您要求的,但我认为可以解决您的问题。
或者,如果您的虚拟主机具有完全相同的配置,只需将您的网页放在 /somewhere/{nameOfDomain} 中,然后将 /somewhere 共享为另一个虚拟主机。然后您就可以通过访问http://myVhost/ {nameOfDomain} 访问任何分页。如果在虚拟主机中有一些访问规则[可能不包含在“另一个虚拟主机”配置中],这可能会导致一些安全风险。
在任何标准打包的 apache 上都将设置为通过 IP 地址使用。基本上没有虚拟主机