在一个域名上配置两个symfony实例

时间:2017-04-17 09:27:55

标签: php symfony ssl multiple-instances

我有一个开发服务器,我在其中托管了一个基于symfony框架的网站(www.example.com) 现在,对于这个域名“www.example.com”,我们拥有所有SSL证书以及网站所需的其他内容。

我有一个要求,我必须再部署一个symfony实例,但不创建新的域名。我怎样才能实现它? 它可以指向www.example.com/newInstance吗?

我可以在同一个域名上运行两个网站吗? www.example.com/oldInstance和www.example.com/newInstance

我对网络的了解较少,所以寻求这方面的帮助。

2 个答案:

答案 0 :(得分:2)

如果您使用Apache作为Web服务器,则可以使用alias指向每个目录

<VirtualHost *:80>
  DocumentRoot "path/To/Your/DocumentRoot/oldInstance"
  ServerName www.example.com

  <Directory "path/To/Your/DocumentRoot/oldInstance">
    DirectoryIndex app.php
    Options Indexes    
    AllowOverride All
    Require all granted
  </Directory>

   Alias /newInstance "path/To/Your/DocumentRoot/newInstance"

   <Directory "path/To/Your/DocumentRoot/newInstance">
      DirectoryIndex app.php
      Options Indexes
      AllowOverride All
      Require all granted
  </Directory>  
</VirtualHost>

如果您请求http://example.com/,您将获得oldInstance目录。如果您请求http://example.com/newInstance,您将获得newInstance目录。

如果您想使用http://example.com/oldInstance而不是http://example.com获取oldInstance目录,那么您可以为其配置另一个别名:

Alias /oldInstance "path/To/Your/DocumentRoot/oldInstance"

请记住检查Apache配置中是否启用了mod_alias

LoadModule alias_module modules/mod_alias.so

我希望它可以帮到你。

答案 1 :(得分:1)

如果您使用Nginx + Apache,并且希望根据路径将Apache指向不同的目录,则可以使用下一个配置来实现它:

#Nginx
location /newInstance {        
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host YOUR_HOST_FOR_APACHE_HERE;
    proxy_pass http://127.0.0.1:8080;
}

location /oldInstance {        
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host ANOTHER_HOST_FOR_APACHE_HERE;
    proxy_pass http://127.0.0.1:8080;
}

并为Apache设置VirtualHost配置:

#Apache
<VirtualHost *:8080>
    DocumentRoot    "/var/www/newInstance"
    ServerName      YOUR_HOST_FOR_APACHE_HERE
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot    "/var/www/oldInstance"
    ServerName      ANOTHER_HOST_FOR_APACHE_HERE
</VirtualHost>

如果您的配置中只有Apache,则可以按照@Hokusai的建议配置别名:

<VirtualHost *:80>
  DocumentRoot "path/To/Your/DocumentRoot/oldInstance"
  ServerName www.example.com

  <Directory "path/To/Your/DocumentRoot/oldInstance">
    DirectoryIndex app.php
    Options Indexes    
    AllowOverride All
    Require all granted
  </Directory>

   Alias /newInstance "path/To/Your/DocumentRoot/newInstance"

   <Directory "path/To/Your/DocumentRoot/newInstance">
      DirectoryIndex app.php
      Options Indexes
      AllowOverride All
      Require all granted
  </Directory>  
</VirtualHost>

您也可以使用前端控制器(例如app.php)来管理所有流量,并根据主机名导入不同的文件。