![VHOST 在 Apache 中不起作用](https://linux22.com/image/1035728/VHOST%20%E5%9C%A8%20Apache%20%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我在 Ubuntu 11.04 上安装了一台 LAMP 服务器。现在的问题是必须从终端启用和禁用网站。所有网站都必须从终端访问,http://localhost
效率不高。因此,我使用网上的一些教程创建了一个 VHOSTS。以下是它的代码
<VirtualHost *:80>
ServerAdmin webmaster@localhost
Servername site.com
ServerAlias www.site.com
DocumentRoot /home/starx/public_html/site/public
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/starx/public_html/site/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
nGen
ErrorLog ${APACHE_LOG_DIR}/site-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/site-access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
现在,我仍然无法访问该页面,http://site.com
但如果我使用它访问,http://localhsot/
就可以访问。
我已禁用所有其他网站(包括默认网站),并且仅启用了一个网站,即site
如何解决这个问题?
答案1
我只是想让它工作起来,经过一番寻找之后,我发现了问题所在。
我正在为 Ubuntu 12.04 运行 xampp (lampp) 1.80。
打开/opt/lampp/etc/httpd.conf
参见 488 行
# Virtual hosts
# Include etc/extra/httpd-vhosts.conf
从 中删除“#” include
。
新安装不会加载httpd-vhosts.conf
开箱即用的内容。
答案2
根据/usr/share/doc/apache2/README.Debian.gz
,如果您希望为其他站点创建定义,则需要将单个站点配置片段放入/etc/apache2/sites-available/
(请参阅/etc/apache2/sites-available/default
中的示例)。然后,您可以使用 a2ensite(8) 和 a2dissite(8) 命令启用和禁用给定主机上的站点。请注意,如果分布式配置发生重大更改,则这可能无法完全按照所述的方式工作。
如果以这种方式启用了某个站点,但仍然无法正常工作,您需要确保 Web 服务器能够以与 Web 服务器认为已分配的 IP 地址相匹配的方式解析新站点的名称:最简单的方法可能是从服务器进行检查。您还需要验证客户端是否以使其到达相关服务器的方式解析名称(尽管解析的 IP 不需要与服务器使用的 IP 相匹配)。对于不安全的站点,最简单的方法是,一旦连接完成(没有提示),输入以下三行(请注意,第三行是空白的,但您必须第三次按 Enter 键):w3m https://my.new.secure.site
telnet my.new.site 80
获取/HTTP/1.1 主机:my.new.site
如果这些方法有效,则其他问题都是浏览器问题。如果第一个方法成功,第二个方法失败,则网络层可能存在问题(NAT、代理等):如何准确排除故障在很大程度上取决于网络拓扑和现有设备:如果这适用于您,请提出另一个具体问题。
如果第一次测试失败,请仔细检查服务器上可用的名称服务和分配给服务器的 IP 地址 (ifconfig -a)。还要检查您的站点访问日志,以验证您是否在正确的时间看到连接。最后,确保您的虚拟主机按名称而不是按 IP 进行监听,并且不会在 VirtualHost 指令中根据 IP 过滤结果。
答案3
我不确定这是你想要的。
用这些简单的短代码替换您的代码。
<VirtualHost *:80>
ServerAdmin admin@localhost
DocumentRoot YourDocumentRoot
ServerName site.com
ServerAlias www.site.com
ErrorLog localhost
CustomLog localhost-access_log common
</VirtualHost>
您可以阅读有关 vhost 的更多信息这里
答案4
您是否已将 site.com 和 www.site.com 添加到 /etc/hosts 文件中,以确保 dns 路由正确?您可以尝试nslookup site.com
测试 dns。
如果您想确保该操作http://localhost
不起作用,请删除 /etc/apache2/default、default-ssl 文件并使用单个虚拟主机。