【发布时间】:2015-10-17 13:18:40
【问题描述】:
我的实际问题是我想让我的“site.com/blog/index.php”直接指向“/srvX/www/blog/caller/index.php”。虽然使用“root /srv/www/”定向到“/srv/www/blog/index.php”非常简单,但这不是我想要的。我发现了“别名”,它似乎可以做我想做的事。
1)第一次尝试:
server {
listen 80;
server_name _;
root /srv/www/blog/pages;
index index.php;
location /blog {
alias /srv/www/blog/caller;
}
}
那里正在尝试 site.com/blog 给我一个 404 未找到,并且没有任何内容弹出到 /var/log/nginx/error.log
1)第二次尝试知道会发生什么:
如果我更改“别名 /srv/www/blog/caller;”到一条坏路,让我们说“别名/srvX/www/blog/caller;”我实际上在浏览器中得到了相同的行为,但是 我可以在 /var/log/nginx/error.log 中看到:
[error] 7229#0: *1 "/srvX/www/blog/caller/index.php" 未找到(2:没有这样的文件或目录),客户端:192.168.1.200,服务器:192.168.1.221 , 请求:“GET /blog/ HTTP/1.1”,主机:“192.168.1.221”
结论:我不知道那里发生了什么:似乎很清楚 nginx 在我的第一次尝试中获取了文件,但它毫无理由地将 404 错误发送到浏览器,而当指定错误的路径时,它马上告诉我。 :/*
编辑
好吧,我找到了解决方案。基本上它完全可以在 nginx 上运行,问题出在 php-fpm 上,他在 nginx 中使用别名时失去了理智。您需要做的是添加别名位置的子位置:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
现在可以了。 nginx 在 nginx 的日志中没有任何内容的情况下给出了 404 错误,这一事实是 php-fpm 未能提供服务。
【问题讨论】:
-
当您尝试
site.com/blog/index.php时会发生什么?或者尝试简单的 html(“Hello world”)!能否请您复制完整的nginx.conf?