【发布时间】:2015-09-26 07:29:02
【问题描述】:
我正在我的服务器上安装limesurvey。
由于 nginx 最初被用作机器上我的 golang 服务器的代理,我必须让 php 在子文件夹中运行。
limesurvey 在磁盘上的根目录是 /limesurvey。
所以我的 nginx 配置如下:
location /limesurvey {
alias /limesurvey;
}
location ~ /limesurvey/.*\.php$ {
alias /limesurvey;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /$fastcgi_script_name;
include fastcgi_params;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
但是当我访问http://example.com/limesurvey/index.php时,它显示:
opendir(/limesurvey/limesurvey/tmp/assets/1086beef): failed to open dir: No such file or directory
我要存档的是: http://example.com/limesurvey/* 进入本地文件系统 (/limesurvey/*)
所有其他查询都转到 127.0.0.1:8080
如何配置 nginx 来解决这个问题?
【问题讨论】:
-
问题不在您的 nginx 配置中,而在您的 index.php 代码中。您尝试打开 url / src 设置为“/limesurvey/tmp/assets/1086beef”的东西,但您必须打开 url / src 设置为“/tmp/assets/1086beef”...!显示 index.php 代码 ;)
-
@Julo0sS 我正在安装limesurvey,我猜项目中会有很多这样的代码。有什么办法可以用 nginx 配置来解决这个问题?
-
一方面,你说服务器,当用户想去你的网站根目录时,服务器自动去根目录/limesurvey。而且,另一边(在 index.php 中)你告诉一些东西去从 root/limesurvey 中获取信息。但是您已经将(服务器端)root 定义为 root/limesurvey。这会导致错误的 root/limesurvey/limesurvey/... 事情!
-
IMO:您不必配置 /limesurvey... 您只需正确配置您的根。然后如果用户进入 root/limesurvey,那么它就可以正常工作了......
-
我已经编辑了这个问题。因为我已经有了,并且必须在 web 根目录上保留 proxy_pass 设置,所以我必须让子文件夹只运行 php。