【问题标题】:Nginx/Php : Proxy included php scriptNginx/Php : 代理包括 php 脚本
【发布时间】:2015-11-26 21:24:31
【问题描述】:

假设我的网站位于/srv/http/www,可在www.mydomain.com 访问。

我正在尝试创建一个子域devel.mydomain.com,作为我可以在发布之前测试功能的地方。功能代码在/srv/http/www-devel

这个想法是,当尝试访问devel.mydomain.com 时,会考虑/srv/http/www-devel 中的所有可用资源,并在/srv/http/www 中检索所有不可用的资源作为后备。因此,只需将 /srv/http/www-devel 中的所有文件移动到 /srv/http/www(并可能覆盖现有文件)即可部署我的功能。

以下 nginx 配置几乎适用于所有资源:

server {
    listen 80;
    listen 443 ssl;
    server_name devel.mydomain.com;
    access_log              /var/log/nginx/20-devel.access.log;
    error_log               /var/log/nginx/20-devel.error.log;
    ssl_certificate         ...;
    ssl_certificate_key     ...;

    index                   index.php index.html;
    root                    /srv/http/www-devel;

    location ~ /\.          { deny all;                           }
    location = /robots.txt  { access_log off; log_not_found off;  }
    location = /favicon.ico { access_log off; log_not_found off;  }

    location /              { try_files $uri @fallback;           }
    location @fallback      { root /srv/http/www;                 }

    location ~ \.php$ {
        fastcgi_pass          unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index         index.php;
        include               fastcgi.conf;
    }
}

问题仍然在于 php 文件的处理。如果我在/srv/http/www-devel 中放入一个需要一些资源的php 脚本,并且如果/srv/http/www-devel 中没有这些资源,则php 解释器将不会在/srv/http/www 中查找。如何在 php 级别启用此行为?

编辑:我还注意到location ~ \.php$ 指令不会在 devel 目录中获取 php 页面。我怎样才能在指令中启用回退?

【问题讨论】:

    标签: php nginx proxy


    【解决方案1】:

    在 PHP 中使用备用目录的一种方法是include path

    如果你用这样的方式加载文件:

    require_once 'src/Foo/Bar.php';
    

    并且您已经配置了包含路径:

    set_include_path('/srv/http/www-devel:/srv/http/www');
    

    那么 PHP 会先尝试/srv/http/www-devel/src/Foo/Bar.php,然后再尝试/srv/http/www/src/Foo/Bar.php

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多