【问题标题】:Nginx + Zend Framework 2 + Run multiple websites with different domain from the same codebaseNginx + Zend Framework 2 + 从同一个代码库运行多个不同域的网站
【发布时间】:2013-03-15 21:29:51
【问题描述】:

我有一个模块化 Zend Framework 应用程序,我想将其用作多个具有不同域的网站的基础,即:

  • mywebsite.com
  • mydifferentwebsite.com
  • mythirdwebsite.com

我想从同一个代码库和同一个服务器上运行所有这些网站。我想根据主机名更改不同的设置,例如样式或可用页面。

目前这是我获取主机名的方式:

$requestSiteUrl = $this->serviceLocator->get('URLRequest')->getServer('HTTP_HOST');

但是我不确定这有多可靠。有没有更好的方法来找出请求来自哪个网站?

这是我在服务器上用于不同网站的 Nginx 配置示例:

server {
        listen 80;
        server_name mywebsite.com;

        root /var/www/mywebsite/public;
        index index.php;

        server_tokens off;

        if (!-e $request_filename) {
                rewrite ^.*$ /index.php last;
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param APPLICATION_ENV develop;
                fastcgi_param PHP_VALUE "error_log=/var/log/php/mywebsite_php_errors.log";
                include /etc/nginx/fastcgi_params;
        }
}

【问题讨论】:

    标签: nginx centos zend-framework2


    【解决方案1】:

    在做:

    $requestSiteUrl = $this->serviceLocator->get('URLRequest')->getServer('HTTP_HOST');
    

    是另一种做法:

    $_SERVER['HTTP_HOST']
    

    (但显然在未设置变量时效果更好)。所以是的,这是找出 nginx 认为被请求的域的好方法。从技术上讲,如果出现以下情况,则存在安全漏洞:

    • 有人只是在他们的请求中修改了Host 标头。

    • 如果您的站点位于不同的 IP 地址上,并且有人编辑了他们的主机文件以使用服务器的“错误”IP,然后向该“错误”IP 地址发出请求。

    那么您可能会出现错误的网站名称。

    如果您的所有网站都在同一个 IP 上,那么您对这种欺骗就无能为力了。如果它们都在不同的 IP 地址上,并且您将 Nginx 设置为每个主机使用一个 server,并且它们只是在监听分配的 IP 地址,那么您可以更改为使用

    $_SERVER['SERVER_NAME']
    

    或 Zend 等价物。

    那只会给你配置文件中 server_name 条目定义的服务器名称,并且是不可欺骗的。

    只要您不让任何安全性依赖于拥有正确的服务器名称,那么您就不会有问题。即当人们登录到一个站点时,他们不应该也登录到其他站点,因为每个站点的会话名称应该是唯一的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-16
      • 2013-02-19
      • 2012-04-28
      • 2017-04-07
      • 2010-11-27
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多