FastCGI 在 stderr 中发送:“主脚本未知”,同时从上游读取响应头

FastCGI 在 stderr 中发送:“主脚本未知”,同时从上游读取响应头

需要帮助在新服务器上找到问题。我正在使用 nginx php-fpm 和 varnish 运行 magento 网站。网站一片空白,只有“文件未找到”的文本。

我在 nginx 日志中收到错误

2022/12/17 12:06:25 [error] 166796#166796: *4 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: sample.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/php-fpm/sample.com.sock:", host: "sample.com"

在访问日志中:

[17/Dec/2022:12:31:14 +0100] "GET / HTTP/2.0" 404 36 "-" "Mozilla/5.0 

这是站点 nginx conf 文件:

    upstream fastcgi_backend2 {
    server unix:/var/php-fpm/sample.com.sock;}


server {
    listen xxx.xxx.xxx.xx:80;
    server_name sample.com www.sample.com;
    access_log /var/log/nginx/sample.com_access.log;
    error_log /var/log/nginx/sample.com_error.log;
    return 301 https://sample.com$request_uri;
    
    gzip on;
    gzip_vary on;
    gzip_proxied expired no-cache no-store private auth;
    gzip_min_length 256;
    gzip_comp_level 6;
    gzip_disable "msie6";
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    location ~ "\.php(/|$)" {
        default_type application/x-httpd-php;
        try_files $uri $fastcgi_script_name =404;
        fastcgi_pass unix:/var/php-fpm/sample.com.sock;
    }
}

server {
    server_name sample.com www.sample.com;

    access_log /var/log/nginx/sample.com_access.log;
    error_log /var/log/nginx/sample.com_error.log;

    resolver 8.8.8.8 8.8.4.4;  
    listen 443 ssl http2;

  ssl_certificate /etc/letsencrypt/live/sample.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/sample.com/privkey.pem; # managed by Certbot

    ssl_session_cache   shared:SSL:60m;

    ssl_session_timeout 220m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;


    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    location / {
        proxy_pass http://127.0.0.1:6081;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443; 
        proxy_set_header X-IP-For-Cache-Refresh $realip_remote_addr;
        proxy_set_header Host $host;
        proxy_redirect     off;
        proxy_set_header HTTPS on;
        proxy_connect_timeout 900; 
        proxy_send_timeout 900; 
        proxy_read_timeout 900; 
        send_timeout 900;
        proxy_buffers 728 1600k;
        proxy_buffer_size 1600k;

   }
}

location ~ (/customer/account/login|/customer/account/login/|/checkout) {
      proxy_pass http://127.0.0.1:8080;
      proxy_set_header X-Real-IP  $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto https;
      proxy_set_header X-Forwarded-Port 443;
      proxy_set_header X-IP-For-Cache-Refresh $realip_remote_addr;
      proxy_set_header Host $host;
      proxy_set_header HTTPS "on";
      proxy_connect_timeout 900;
      proxy_send_timeout 900;
      proxy_read_timeout 900;
      send_timeout 900;
      proxy_buffers 728 1600k;
      proxy_buffer_size 1600k;
    }
      

}

server {
    listen 8080;
    server_name sample.com www.sample.com;
   
    #root /home/sample/public_html;
    set $MAGE_ROOT /home/sample/public_html;
    include /home/sample/public_html/nginx.conf;
    #index index.php index.htm index.html;
    access_log /var/log/nginx/sample.com_backend_access.log;
    error_log /var/log/nginx/sample.com_backend_error.log;
    fastcgi_param GATEWAY_INTERFACE CGI/1.1;
    fastcgi_param SERVER_SOFTWARE nginx;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param SCRIPT_FILENAME /home/sample/public_html$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param REQUEST_URI $request_uri;
    fastcgi_param DOCUMENT_URI $document_uri;
    fastcgi_param DOCUMENT_ROOT /home/sample/public_html;
    fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param REMOTE_ADDR $remote_addr;
    fastcgi_param REMOTE_PORT $remote_port;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;
  fastcgi_buffers 16 16k;
  fastcgi_buffer_size 32k;
    fastcgi_param HTTPS $https;
    location ~ (^|/)\. {
        return 403;
    }


    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/php-fpm/sample.com.sock;
     
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
  
   
    }
}

编辑:

这是我设置为包含 home/sample/public_html/nginx.conf 的文件

root $MAGE_ROOT/pub;

index index.php;
autoindex off;
charset UTF-8;
error_page 404 403 = /errors/404.php;
#add_header "X-UA-Compatible" "IE=Edge";


# Deny access to sensitive files
location /.user.ini {
    deny all;
}

# PHP entry point for setup application
location ~* ^/setup($|/) {
    root $MAGE_ROOT;
    location ~ ^/setup/index.php {
        fastcgi_pass   fastcgi_backend2;

        fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
        fastcgi_param  PHP_VALUE "memory_limit=756M \n max_execution_time=600";
        fastcgi_read_timeout 600s;
        fastcgi_connect_timeout 600s;

        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location ~ ^/setup/(?!pub/). {
        deny all;
    }

   location ~ ^/setup/pub/ {
        add_header X-Frame-Options "SAMEORIGIN";
    }
}

# PHP entry point for update application
location ~* ^/update($|/) {
    root $MAGE_ROOT;

    location ~ ^/update/index.php {
        fastcgi_split_path_info ^(/update/index.php)(/.+)$;
        fastcgi_pass   fastcgi_backend2;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        include        fastcgi_params;
    }

    # Deny everything but index.php
    location ~ ^/update/(?!pub/). {
        deny all;
    }

    location ~ ^/update/pub/ {
        add_header X-Frame-Options "SAMEORIGIN";
    }
}

location / {
    try_files $uri $uri/ /index.php$is_args$args;
    if ($http_user_agent ~* (SemrushBot) ) {
   return 403;
}
}
location /pub/.well-known/acme-challenge/ {
    try_files $uri $uri/ /index.php$is_args$args;

}

location /test.php {
    try_files /test.php =404;
}

location /pub/ {
    location ~ ^/pub/media/(downloadable|customer|import|custom_options|theme_customization/.*\.xml) {
        deny all;
    }
    alias $MAGE_ROOT/pub/;
    add_header X-Frame-Options "SAMEORIGIN";
}


location /static/ {
    # Uncomment the following line in production mode
     expires max;

    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
        rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2|html|json|webp)$ {
        add_header Cache-Control "public";
        add_header X-Frame-Options "SAMEORIGIN";
        expires +1y;

        if (!-f $request_filename) {
            rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
        }
    }
    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
        add_header Cache-Control "no-store";
        add_header X-Frame-Options "SAMEORIGIN";
        expires    off;

        if (!-f $request_filename) {
           rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
        }
    }
    if (!-f $request_filename) {
        rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
    }
    add_header X-Frame-Options "SAMEORIGIN";
}

location /media/ {

  try_files $uri $uri/ /get.php$is_args$args;

    location ~ ^/media/theme_customization/.*\.xml {
        deny all;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2|webp)$ {
        add_header Cache-Control "public";
        add_header X-Frame-Options "SAMEORIGIN";
        expires +1y;
        try_files $uri $uri/ /get.php$is_args$args;
    }
    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
        add_header Cache-Control "no-store";
        add_header X-Frame-Options "SAMEORIGIN";
        expires    off;
        try_files $uri $uri/ /get.php$is_args$args;
    }
    add_header X-Frame-Options "SAMEORIGIN";
}

location /media/customer/ {
    deny all;
}

location /media/downloadable/ {
    deny all;
}

location /media/import/ {
    deny all;
}

location /media/custom_options/ {
    deny all;
}

location /errors/ {
    location ~* \.xml$ {
        deny all;
    }
}

#Cache everything by default
set $no_cache 0;

#Only cache GET requests
 if ($request_method != GET){
        set $no_cache 1;
    }
    
#Don't cache POST requests
if ($request_method = POST)
{
    set $no_cache 1;
}

#Don't cache if the URL contains a query string
if ($query_string != "")
{
    set $no_cache 1;
}

#Don't cache the following URLs
 if ($request_uri ~* "/(customer/account/login|customer/account/login/|checkout)"){
     set $no_cache 1;
 }
 
#Don't cache if there is a cookie called PHPSESSID
if ($http_cookie = "PHPSESSID")
{
    set $no_cache 1;
}
# PHP entry point for main application
location ~ ^/(index|get|info|static|errors/report|errors/404|errors/503|health_check)\.php$ {
    try_files $uri =404;
    fastcgi_pass   fastcgi_backend2;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;

    fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
    fastcgi_param  PHP_VALUE "memory_limit=4096M \n max_execution_time=18000";
    fastcgi_read_timeout 600s;
    fastcgi_connect_timeout 600s;

    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;

}

gzip on;
gzip_disable "msie6";

gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types
    text/plain
    text/css
    text/js
    text/xml
    text/javascript
    application/javascript
    application/x-javascript
    application/json
    application/xml
    application/xml+rss
    image/svg+xml;
gzip_vary on;

# Banned locations (only reached if the earlier PHP entry point regexes don't match)
location ~* (\.php$|\.phtml$|\.htaccess$|\.git) {
    deny all;
}

相关内容