VHOST 在 Apache 中不起作用

VHOST 在 Apache 中不起作用

我在 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.sitetelnet 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 文件并使用单个虚拟主机。

相关内容