主持人:

主持人:

尝试在单个 aws ec2 实例中托管 2 个或更多域。

我的配置是:

主持人:

18.219.39.37 [我的域名]

httpd.conf:

听 80

<Directory />
AllowOverride 无
要求全部授予
</Directory>


#虚拟主机

包括 etc/extra/httpd-vhosts.conf

httpd-xampp.conf:

#自 XAMPP 1.4.3 起 AllowOverride AuthConfig Limit Order 允许、拒绝 要求全部授予 允许全部

httpd-vhosts.conf:

<VirtualHost *:80>
ServerAdmin webmaster@[IPv4 公网 IP]
DocumentRoot "/opt/lampp/htdocs/rustikhaws/public_html/"
ServerName [IPv4 公网 IP]
</VirtualHost>



这个配置给我...

未找到对象!

此服务器上未找到所请求的 URL。如果您手动输入了 URL,请检查拼写并重试。

如果您认为这是服务器错误,请联系网站管理员。


我不知道我的配置缺少什么。


请帮助我。非常感谢!

答案1

(假设一个 IP 地址和 2 个站点,均在端口 80 上,这是 http 多托管最典型的设置)

ServerName 需要是域名,而不是 IP 地址,并且每个域名都需要一个 VirtualHost 部分。

您无需在配置中的任何地方指定 IP 地址(VirtualHost 行中的 *:80 回答所有 IP)。您在 DNS 中指定域 -> IP 地址映射,该 DNS 位于 Apache 之外。出于测试目的,您可以修改测试计算机上的 hosts 文件。

(这是因为 HTTP 协议不依赖于 IP 地址 - 当与服务器打开连接时,客户端发送的标头之一就是它想要获取信息的主机(域)名。

答案2

您需要.conf在目录中创建单独的文件/sites-available/

如果您可以发布完整的站点启用配置,它将更容易阅读。

VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

此外,如果您httpd.conf托管AllowOverride none 的是 Wordpress 网站并使用永久链接,则此设置应该是AllowOverride all

您收到的错误是因为在服务器上找不到该 URL。

a2ensite example.com尝试在目录中启用该网站sites-available。此命令将创建符号链接。以类似的方式,a2dissite将通过删除符号链接来禁用该网站。

发布你的完整配置,我可以为你提供更多帮助

相关内容