我知道这不是一个不常见的问题,但不知怎的,我似乎无法找到直接答案。有人能够尽可能地直截了当地回答这个问题吗?
我的NGINX(提供静态文件)和HHVM(来自控制台的hhvm index.php
工作正常,但我无法通过NGINX访问.php而没有获得404
情况:
HHVM 3.5.0
Nginx 1.7.9
我在/etc/nginx/conf.d/default.conf
中有这个server {
listen 80;
server_name localhost;
location / {
root /var/www;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
include hhvm.conf;
}
在HHVM.conf中
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
答案 0 :(得分:2)
将以下HHVM conf替换为您的:
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
<强>问题强>
我在$document_root
和$fastcgi_script_name
之间看到了一个空格。
<强>更新强>
使用$document_root
/var/www
即可解决问题
答案 1 :(得分:2)
root
指令在location
内定义,这就是为什么它不能通过变量$document_root
在hhvm.conf中访问。
应将其直接移至server
:
server {
listen 80;
server_name localhost;
root /var/www;
location / {
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
include hhvm.conf;
}
然后,您的hhvm.conf
不需要修改,但您可以do some cleanup there too。