我在apache2上使用phusion passenger部署,只需将我的单个Rails应用程序部署到域中,比如bar.com
。现在,我希望将我最近创建的其他应用推送到条形码域的子域名,例如foo.bar.com
。我对如何在httpd.conf
文件中设置虚拟主机以允许此设置感到有点困惑。我通过godaddy设置我的DNS,以便新的子域将指向与初始域相同的IP地址(它们都驻留在同一服务器上)。
这是我的httpd.conf文件中的VirtualHosts(注意两个文档根指向不同的应用程序):
NameVirtualHost *:80
<VirtualHost *:80>
ServerName bar.com
ServerAlias www.bar.com
DocumentRoot /home/me/app1/public
<Directory /home/me/app1/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName foo.bar.com
ServerAlias foo.bar.com www.foo.bar.com
DocumentRoot /home/me/app2/public
<Directory /home/me/app2/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
通过此设置,我可以导航到www.bar.com
或bar.com
,但似乎子域无效,导航到foo.bar.com
会引导我访问此页面:
未找到
在此服务器上找不到请求的URL /。
Apache / 2.2.20(Ubuntu)服务器在foo.bar.com端口80
答案 0 :(得分:1)
这涉及几个步骤。首先,我将我的虚拟主机移到了我的httpd.conf文件之外,并在每个以相应域名bar.com
和foo.bar.com
命名的sites-available文件夹下创建新文件。接下来,我必须通过运行apache命令sudo a2ensite
将每个站点添加到已启用的站点。最后我不得不调用命令sudo service apache2 reload
。使用管理员访问权限运行每个命令都很重要,否则它不起作用。
另外值得一提的是,像Firefox这样的浏览器喜欢缓存旧的网站域名数据,所以如果网址foo.bar.com以前不能正常工作并且您解决了问题,那么在清除缓存之前它仍然无法正常工作。
答案 1 :(得分:0)
您是否记得在添加第二个虚拟主机后重启apache?