主要腳本未知 nginx

主要腳本未知 nginx

我是 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;
}

這個例子了解詳情。

相關內容