【发布时间】: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 页面。我怎样才能在指令中启用回退?
【问题讨论】: