私は nginx を初めて使います。 kubernetes にデプロイしようとしています。 しかし、次のようなエラーが出ます:
FastCGI が標準エラー出力に送信しました: アップストリームからの応答ヘッダーを読み取り中に「プライマリ スクリプトが不明です」、クライアント: 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;
}
}
私のプロジェクトは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;
}
見るこの例詳細については。