저는 nginx를 처음 사용합니다. 쿠버네티스에 배포하려고 합니다. 하지만 나는 다음과 같은 결과를 얻습니다.
FastCGI가 stderr로 전송됨: 업스트림에서 응답 헤더를 읽는 동안 "기본 스크립트 알 수 없음", 클라이언트: 10.0.1.1, 서버: , 요청: "GET /app.php/ HTTP/1.1", 업스트림: "fastcgi://[:: 1]:9000", 호스트:
이 문제를 해결하는 방법을 모르겠습니다. URL을 받으면 다음과 같습니다.
파일을 찾을 수 없습니다.
여기 내 구성 파일이 있습니다.
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;
}
}
내 프로젝트는 심포니에 있습니다
답변1
fastcgi_split_path_info
PHP URI에 경로 정보가 포함된 경우 지시문(또는 유사한 것)을 사용하여 실제 스크립트 이름(예: /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;
}
보다이 예자세한 내용은.