尝试在单个 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
将通过删除符号链接来禁用该网站。
发布你的完整配置,我可以为你提供更多帮助