【发布时间】:2016-03-03 08:51:29
【问题描述】:
我的目标是拥有通配符子域,每个子域都从自己的目录中提供 php。例如,“www”子域从“public_html/www”提供服务,“blog”从“public_html/blog”提供服务。这是我当前的 nginx 配置,它允许它部分工作:
server {
listen 80;
server_name ~^(.*)\.example\.com$;
root /var/www/example.com/public_html/$1;
index index.php index.htm;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
为了测试,我在www目录中有一个index.php,在blog目录中有一个index.htm。博客子域工作正常,并显示博客目录中的 index.htm。
但是,www 子域不起作用,页面返回“未指定输入文件”。如果我将“www”硬编码到根指令而不是“$1”,它适用于“www”子域,但当然博客也会显示该内容。
因此,似乎 php 特定位置内的 $document_root 并未评估代表子域的根指令的 $1。使用 $document_root 时需要更改什么或如何确保评估根?
【问题讨论】:
标签: nginx