Apache 虚拟主机:不同的路径在同一 IP 上为不同的应用程序服务

Posted

技术标签:

【中文标题】Apache 虚拟主机:不同的路径在同一 IP 上为不同的应用程序服务【英文标题】:Apache virtualhosts: different paths serve different application on same IP 【发布时间】:2013-10-06 02:28:29 【问题描述】:

我在我的本地网络上设置了一个带有 Apache2 的 Ubuntu 服务器。

我想在同一台服务器上管理不同的应用程序,当您请求一个 url 时,会提供一个专用应用程序。

例如

http://192.168.0.25/my_app_1 -> responds with app1 (for example a Ruby on Rails app)
http://192.168.0.25/my_app_2 -> responds with app2 (for example a php website)
[...]
# where 192.168.0.25 is the IP of the server

我认为这是通过在 Apache2 中正确配置虚拟主机来完成的。

此时,app1(即 Ruby on Rails)的示例配置如下:

<VirtualHost 192.168.0.25:80>
 DocumentRoot path_to_my_public_app1_folder
 <Directory path_to_my_public_app1_folder>
  Options -MultiViews
  AllowOverride All
 </Directory>
 RailsEnv production
</VirtualHost>

如何定义子路径?也许是这样的?

<VirtualHost 192.168.0.25/my_app1:80>

我做得对吗? 因为此时我收到 404(甚至没有自定义 Apache 页面“它的工作!”)

【问题讨论】:

【参考方案1】:

VirtualHost 意味着不同的东西。它允许您(简而言之)托管响应不同名称的站点,例如:

http://mydomain.com
http://anotherdomain.com

在同一台服务器上。因此,可以将其视为虚拟应用程序,它们都在同一台机器上,但使用不同的名称进行标识。

您的用例不同。您想要配置实例 192.168.0.25 以及它如何服务不同的请求。所以URL中host后面的部分:http://HOST/PATH_TO_APP

对于响应192.168.0.25 的实例,您应该编辑默认配置

/etc/apache2/sites-available/default

您可以添加以下内容:

Alias /my_app_1 path_to_my_public_app1_folder
Alias /my_app_2 path_to_my_public_app2_folder

【讨论】:

以上是关于Apache 虚拟主机:不同的路径在同一 IP 上为不同的应用程序服务的主要内容,如果未能解决你的问题,请参考以下文章

Apache虚拟目录实现同一个IP绑定多个域名

CentOS 7运维管理笔记----Apache 基于 IP 的虚拟主机配置

Apache 创建虚拟主机目录和设置默认访问页面

Apache构建虚拟web主机

Apache虚拟目录和多端口多主机名配置

如何设置虚拟主机以将同一 IP 上的两个端口指向不同的服务器名称?