如何在运行 Ubuntu 的 AWS EC2 上配置多个虚拟主机? [关闭]

Posted

技术标签:

【中文标题】如何在运行 Ubuntu 的 AWS EC2 上配置多个虚拟主机? [关闭]【英文标题】:How to configure multiple Virtual Hosts on AWS EC2 Running Ubuntu? [closed] 【发布时间】:2013-04-29 13:40:05 【问题描述】:

我正在尝试为我的 EC2 实例配置一个虚拟主机。我在我的 EC2 实例和 apache2 上使用 ubuntu 作为 Web 服务器。

我在 /var/www 的 3 个不同文件夹中有 3 个应用程序(基于 Web): - /var/www/app_A - /var/www/app_B - /var/www/mywebsite

我希望人们只能使用http://my.ip.address/app_A 和http://my.ip.address/app_B 中的IP 地址(我已将弹性IP 附加到我的EC2 实例)访问app_A 和app_B。至于 /var/ww/mywebsite 中的应用程序,我希望人们能够通过我的域 mywebsite.com 访问它。我已将域指向我的 EC2 IP 地址 (my.ip.address)。

我知道我必须创建虚拟主机才能实现这一点,但我在这方面真的很陌生。我一直在尝试谷歌解决方案,并尝试了几种解决方案,但一直失败。

请告诉我如何正确设置虚拟主机,以便我可以实现上面写的目的。

【问题讨论】:

【参考方案1】:

这很简单,因为您已经安装了 apache,您将能够看到一个名为:/etc/apache2/sites-enabled/000-default 的文件,它指向您在 var 中的 www 文件夹。这个想法是 apache 将其作为主配置文件,因此您可以根据需要定义任意数量的 .conf 文件,因此您可能想要这样的东西:

/etc/apache2/sites-enabled/
├── 000-default -> ../sites-available/default
└── subsystems
    └── appA.conf
    └── appB.conf
    └── appMyWebSite.conf

所以它更容易处理,因为您将所有内容分割成几个 conf 文件,数量不限。

现在,那些必须有什么?这取决于您需要什么,但这几乎是您需要的:

<Directory "/var/www/mywebsite.com/">
    Options Indexes Includes FollowSymLinks MultiViews +ExecCGI
    AddHandler cgi-script cgi pl
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.cgi index.html
</Directory>

<VirtualHost *:80>
    ServerName mywebsite.com
    ServerAdmin youremail@provider.com
    SetEnv VAR_IF_YOU_NEED_ONE VALUE
    RewriteEngine on

    DocumentRoot "/var/www/mywebsite.com/"

    LogLevel warn
    ServerSignature Off

    #And whatever you need take a look to apache documentation
</VirtualHost>

因此您可以将您的域名指向相同的服务器 IP 地址,Apache 将根据这些域名的名称进行处理(即所有域的相同 IP)

希望这会有所帮助。

【讨论】:

我认为这个答案遗漏了最后一个关键步骤,即创建一个从sites-enabledsites-available 中定义的任何新站点的符号链接。无论如何,我必须这样做。 @cdmo 或者,如果可用,请使用“a2ensite”命令,它会为您设置该符号链接,并且可能会进行一些错误检查。 如果你没有域名,只想访问ipaddress:port,在不同的端口上有不同的项目怎么办?

以上是关于如何在运行 Ubuntu 的 AWS EC2 上配置多个虚拟主机? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从本地机器上的 ubuntu (AWS EC2) 读取文件?

在 AWS Ubuntu EC2 上部署 Django 时缺少模块

Amazon AWS EC2 已删除密钥被锁定在根目录之外

将Rstudio与PostgreSQL在AWS EC2中连接

声音驱动程序 - AWS EC2 ubuntu 16.04 实例的 snd-aloop 内核模块设置问题

sh 通过ssh在aws ec2 ubuntu实例中安装节点