FastCGI 在 stderr 中发送:“主要脚本未知”,同时从上游 nginx 错误读取响应头
2021-08-03
1808
我使用 nginx docker 作为代理服务器,并且还有其他容器在运行:
nuxt.js
和
php-fpm
。
这是我的
fpm
的
conf
文件:
server {
server_name fpm.me.com;
root /var/www/fpm/html;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
#location ~ ^/index\.php(/|$) {
# https://stackoverflow.com/questions/68350978/nginx-serving-only-but-not-any-other-files
location ~ \.php(/|$) {
fastcgi_pass fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
#internal;
}
location ~ \.php$ {
return 404;
}
access_log off;
error_log /dev/stderr;
}
但是当我输入
fpm.me.com
时,我在
nginx
的
log
文件中收到此错误:
2021/08/03 09:31:18 [error] 31#31: *13 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: MY_IP, server: fpm.me.com, request: "GET / HTTP/1.1", upstream: "fastcgi://172.20.0.8:9000", host: "fpm.me.com"
我在 StackOverFlow、ServerFault 和其他网站上看到了其他答案,但似乎对我没有帮助。
2个回答
这看起来无效:
fastcgi_pass fpm:9000
您有 2 个选项:
-
使用 unix 套接字:
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
-
使用 TCP 端口
fastcgi_pass 127.0.0.1:9000;
选项 1 稍快一些,并且如果您收到许多并发连接,则不存在端口耗尽的风险。
the_nuts
2021-08-03
问题在于我为
nginx
和
fpm
安装的
volumes
不一样。
这是我的
compose
文件:
services:
nginx:
image: nginx
volumes:
- './fpm/:/var/www/fpm/'
fpm:
image: custom
volumes:
- './fpm/:/var/www/'
虽然它应该是这样的:
services:
nginx:
image: nginx
volumes:
- './fpm/:/var/www/fpm/'
fpm:
image: custom
volumes:
- './fpm/:/var/www/fpm/'
Saeed
2021-08-03