我是 nginx 新手。我尝试在 kubernetes 上部署它。但我得到了:
FastCGI 在从上游读取响应标头时在 stderr 中发送:“主要脚本未知”,客户端:10.0.1.1,服务器:,请求:“GET /app.php/HTTP/1.1”,上游:“fastcgi://[::1]:9000”,主机:
我不知道如何解决这个问题当我获得网址时:
文件未找到。
这是我的配置文件:
server {
listen 80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /srv/webroot/web;
index app.php;
client_max_body_size 30M;
location / {
try_files $uri @pass_to_symfony;
}
location ~ /app_dev.php/ {
try_files $uri @pass_to_symfony_dev;
}
location @pass_to_symfony{
rewrite ^ /app.php?$request_uri last;
}
location @pass_to_symfony_dev{
rewrite ^ /app_dev.php?$request_uri last;
}
location ~ ^/app(_dev)?\.php($|/) {
fastcgi_pass localhost:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
我的项目在 symfony 上
答案1
当 PHP URI 包含路径信息时,您将需要使用fastcgi_split_path_info
指令(或类似指令)将实际脚本名称(例如/app.php
)与附加到它的路径信息(例如/
)分开。
location ~ ^/app(_dev)?\.php($|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass localhost:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
看这个例子了解详情。