【问题标题】:How do I use <VirtualHost> in httpd.conf Amazon linux EC2如何在 httpd.conf Amazon linux EC2 中使用 <VirtualHost>
【发布时间】:2018-12-25 22:59:00
【问题描述】:

我已经尝试了所有可能的解决方案,将 mydomain.com 指向/var/www/html/mysite 下的特定文件夹。首先httpd.conf 文件在/etc/httpd 下丢失,但在/etc/httpd/conf 下找到。也没有/etc/apache2 文件夹。

为了将我的域指向/var/www/html/mysite,我在/etc/httpd/conf/httpd.conf 下写了下面的代码,就在ServerAdmin root@localhost 行的下方

<VirtualHost *:80>
    ServerAdmin webmaster@mysite.com
    ServerName mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/html/mysite/
</VirtualHost>

它确实有效,但一切,甚至 IP 都指向 /var/www/html/mysite/ 。 我无法弄清楚我错在哪里。我只需要 mydomain.com 指向 mysite 目录。

【问题讨论】:

标签: linux amazon-web-services apache2 httpd.conf


【解决方案1】:

你可以检查几件事:

    - Please confirm you have pointed correct ip in A record under DNS management on domain registrar.

    - Are you trying to access site on www version or non-www version. If you are trying to access on www, probably it may not work as I cannot see any ServerAlias in your vhost block.Make sure to restart your apache after making change in vhost for ServerAlias.

- Remove forward slash at end of DocumentRoot line - it should read as /var/www/html/mysite

    - If possible place and entry for 127.0.0.1 mydomain.com in your /etc/hosts file.

【讨论】:

    【解决方案2】:

    您在浏览域 mydomain.com 时遇到什么错误?

    请确保为该EC2的传入流量打开80端口,否则默认情况下将拒绝所有流量

    【讨论】:

    • 问题是关于虚拟主机,而不是关于在 EC2 或安全组中打开端口
    【解决方案3】:

    Docs:

    如果在包含最具体匹配 IP 地址和端口组合的虚拟主机集中没有找到匹配的 ServerName 或 ServerAlias,则将使用列出的第一个匹配的虚拟主机。 p>

    *:80 的虚拟主机接受端口 80 上的所有 IP,因此它适合“第一个列出的匹配的虚拟主机”,这就是它得到服务的原因。

    因此,如果您不喜欢 mydomain.com 作为默认虚拟主机,请在其上方再创建一个(没有 ServerName),它只指向默认位置。

    (顺便说一句,你有 /etc/httpd 而不是 /etc/apache2,因为不同的发行版做的事情不同。通常,httpd 在基于 CentOS 的服务器上,apache2 在 Debian 系列上。配置布局也相当不同。这个是正常的,不用担心。)

    【讨论】:

    • 我确实尝试从 DocumentRoot 中删除尾部斜杠并删除了 ServerName 但它没有锻炼
    • 我没有提到DocumentRoot 中的斜杠(尽管这是一个好建议);你为什么对我发表评论?如果它适用于带有尾部斜杠的所有主机,但您只希望一个主机名起作用,则斜杠没有任何区别。你试过我写的其他东西了吗?
    【解决方案4】:

    确保运行 Apache 的用户有权读取这些文件(如果您可以在 AWS 中进行 chmod,则不确定)。同时从 DocumentRoot 中删除任何尾随斜杠

    提供 ErrorLog 路径(例如 ErrorLog /var/log/vhosts/error.log )以进行深入调试。

    【讨论】:

      【解决方案5】:

      我假设您实际上已将ServerNameServerAlias 设置为适合您的安装?即他们正在服务的真实域......

      我认为您可能需要删除/var/www/html/mysite/ 末尾的/

      另外,您可能希望在这里阅读:https://httpd.apache.org/docs/2.4/urlmapping.html - 它解释了文档如何映射到您的 documentRoot 目录下

      【讨论】:

        猜你喜欢
        • 2013-02-13
        • 2018-09-16
        • 2018-04-22
        • 2023-03-08
        • 2016-09-23
        • 2019-07-29
        • 2012-03-21
        • 2015-06-07
        • 1970-01-01
        相关资源
        最近更新 更多