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

dam*_*ser 7 apache apache2 virtualhost

我在我的本地网络上设置了一个带有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
Run Code Online (Sandbox Code Playgroud)

我认为这是通过在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>
Run Code Online (Sandbox Code Playgroud)

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

<VirtualHost 192.168.0.25/my_app1:80>
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*tus 8

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

http://mydomain.com
http://anotherdomain.com
Run Code Online (Sandbox Code Playgroud)

在同一台服务器上.因此,将其视为虚拟应用程序,所有这些都在同一台计算机上,但由不同的名称标识.

你的用例是不同的.您希望配置实例192.168.0.25以及它如何为不同的请求提供服务.所以URL中主机之后的部分:http://HOST/PATH_TO_APP

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

/etc/apache2/sites-available/default
Run Code Online (Sandbox Code Playgroud)

您可以添加以下内容:

Alias /my_app_1 path_to_my_public_app1_folder
Alias /my_app_2 path_to_my_public_app2_folder
Run Code Online (Sandbox Code Playgroud)