我正在尝试配置 Nginx 以服务 Django 应用程序和 Laravel 应用程序。我的 Django 应用程序正常工作,所以现在我想从 /snipe-it 获取 Laravel 应用程序。
我正在努力解决的 nginx 配置的主要部分在这里:
location /snipe-it/ {
alias /var/www/html/public/;
#try_files $uri $uri/ /index.php$is_args$args;
location ~* \.php(/|$) {
try_files $uri $uri/ =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
该index.php文件的实际文件位置是/var/www/html/public/index.php。
当尝试访问位于 的 Laravel 应用程序时http://127.0.0.1/snipe-it/index.php,我收到“文件未找到”。日志输出如下所示:
nginx_1 | - - 24/Jun/2020:17:37:40 +0000 "GET /snipe-it/index.php" 404
nginx_1 | 2020/06/24 17:37:40 [error] 17#17: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.30.0.1, server: 127.0.0.1, request: "GET /snipe-it/index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "127.0.0.1"
nginx_1 | 172.30.0.1 - - [24/Jun/2020:17:37:40 +0000] "GET /snipe-it/index.php HTTP/1.1" 404 27 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:77.0) Gecko/20100101 Firefox/77.0" "-"
一切都在一个 docker 容器中,该容器源自使用 Debian buster 的官方 nginx 镜像。我相信日志中的第一行来自 php-fpm7.3 进程,因为我在文件中设置access.log了。我还希望它可以更深入地了解应用程序在何处查找文件,但似乎并非如此。/proc/self/fd/2/etc/php/7.3/fpm/pool.d/www.confcatch_workers_outputyesindex.php
如果有帮助的话,权限index.php如下所示:
-rw-r--r-- 1 docker www-data 1887 Jun 23 21:13 index.php
我目前正在以 www-data 用户身份运行 nginx,以 www-data 组中的 docker 用户身份运行 php-fpm。似乎“主脚本未知”错误可能是由许多问题引起的,因此任何关于如何深入挖掘以找到有关问题所在的更多线索的提示都会有所帮助。
仅供参考,这是我的完整 nginx conf 文件:
upstream intranet {
server web:8000;
}
upstream prometheus {
server prometheus:9090;
}
慕娘9325324