【问题标题】:Configuring two symfony instances on one domain name在一个域名上配置两个 symfony 实例
【发布时间】:2017-09-12 21:48:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php symfony ssl multiple-instances


    【解决方案1】:

    如果您使用 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
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      如果你使用 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)来管理所有流量并根据主机名导入不同的文件。

      【讨论】:

        猜你喜欢
        • 2011-03-04
        • 1970-01-01
        • 2019-12-04
        • 2011-01-10
        • 2015-07-15
        • 2012-12-21
        • 2019-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多