Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用<;虚拟主机>;在httpd.conf Amazon linux EC2中_Linux_Amazon Web Services_Apache2_Httpd.conf - Fatal编程技术网

如何使用<;虚拟主机>;在httpd.conf Amazon linux EC2中

如何使用<;虚拟主机>;在httpd.conf Amazon linux EC2中,linux,amazon-web-services,apache2,httpd.conf,Linux,Amazon Web Services,Apache2,Httpd.conf,我已经尝试了所有可能的解决方案,将mydomain.com指向/var/www/html/mysite下的特定文件夹。首先,在/etc/httpd下缺少httpd.conf文件,但在/etc/httpd/conf下可以找到它。也没有/etc/apache2文件夹 为了将我的域指向/var/www/html/mysite,我在/etc/httpd/conf/httpd.conf下写了下面的代码,就在写着ServerAdmin的行下面root@localhost <VirtualHost *:

我已经尝试了所有可能的解决方案,将mydomain.com指向
/var/www/html/mysite
下的特定文件夹。首先,在
/etc/httpd
下缺少
httpd.conf
文件,但在
/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>

服务器管理员webmaster@mysite.com
ServerName mydomain.com
ServerAlias mydomain.com
DocumentRoot/var/www/html/mysite/
它确实起了作用,但一切都没有问题,甚至IP也指向
/var/www/html/mysite/
。 我不知道我错在哪里。我只需要mydomain.com指向mysite目录。

如果在包含最特定匹配IP地址和端口组合的虚拟主机集中找不到匹配的ServerName或ServerAlias,则列出的第一个匹配将使用的虚拟主机

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

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


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

我假设您已经根据您的安装实际设置了
ServerName
ServerAlias
?Ie与他们正在服务的真实域

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


此外,您可能希望在此阅读:-它解释了文档如何映射到documentRoot目录下

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


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

当您浏览域mydomain.com时,您会遇到什么错误


请确保在该EC2为传入流量打开端口80,否则默认情况下将拒绝所有流量。您可以检查以下几项:

    - 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.

我确实尝试从DocumentRoot中删除尾部斜杠,并删除了ServerName,但没有成功。我没有在
DocumentRoot
中提到尾部斜杠(尽管这是一个很好的建议);你为什么对我评论这件事?如果它适用于所有带有尾随斜杠的主机,但您只希望一个主机名起作用,那么斜杠没有任何区别。你试过我写的其他东西了吗?Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的问题。问题是关于虚拟主机,而不是关于在EC2或安全组中打开端口