如何在运行 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-enabled
到sites-available
中定义的任何新站点的符号链接。无论如何,我必须这样做。
@cdmo 或者,如果可用,请使用“a2ensite”命令,它会为您设置该符号链接,并且可能会进行一些错误检查。
如果你没有域名,只想访问ipaddress:port,在不同的端口上有不同的项目怎么办?以上是关于如何在运行 Ubuntu 的 AWS EC2 上配置多个虚拟主机? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
从本地机器上的 ubuntu (AWS EC2) 读取文件?
在 AWS Ubuntu EC2 上部署 Django 时缺少模块
将Rstudio与PostgreSQL在AWS EC2中连接