是否可以使用一个 IP / 域名设置多个虚拟主机?

是否可以使用一个 IP / 域名设置多个虚拟主机?

是否可以使用一个 IP / 域名设置多个虚拟主机?

我们有一个域名 (example.com) 指向我们的服务器 ip (123.123.555.555)。在位置 123.123.555.555 处,我们需要以下文件夹结构:

# production level
/htdocs/www/prod/proj1/
/htdocs/www/prod/proj2/

# dev level
/htdocs/www/dev/proj3/
/htdocs/www/dev/proj4

理想情况下,我们希望example.com解决/htdocs/www/prod/example.com/dev解决/htdocs/www/dev/

够简单了吧?

注意事项:

  1. devprod需要不同的安装目录/apache 规则(allow deny from等)
  2. prod需要解析不包含prod在 URL 中的对象。example.com/proj1将转到example.com/prod/proj1

迄今的尝试......

我尝试过使用相同的虚拟主机进行设置,但为目录指定别名会使其/陷入困境,声称稍后将被覆盖。这是有道理的,因为/匹配/,而且/dev

我也尝试过使用 apache2 的 sites-available/sites-enabled 设置多个虚拟主机,但似乎无法根据 ip/domain 进行区分。通常我会尝试<Directory 'sub.domain.com'>类似<Directory 'sub2.domain.com'>

答案1

您至少有两个选择:

  1. 为 example.com 的子域设置虚拟主机并将其指向您的 dev 文件夹。以下是要放入 sites-available 的 .conf 文件的示例:

    <VirtualHost *:80>
    DocumentRoot "/htdocs/www/dev/proj3/"
    ServerName dev.example.com
    <Directory "/htdocs/www/dev/proj3/">
    allow from all
    Options +Indexes
    </Directory>
    </VirtualHost>
    
  2. 为不同的端口设置虚拟主机,即 8080 或您选择的任何端口,并将其指向 dev 文件夹。

    <VirtualHost *:8080>
    DocumentRoot "/htdocs/www/dev/proj3/"
    ServerName example.com
    <Directory "/htdocs/www/dev/proj3/">
    allow from all
    Options +Indexes
    </Directory>
    </VirtualHost>
    

相关内容