![FastCGI 在 stderr 中发送:“主脚本未知”,同时从上游读取响应头](https://linux22.com/image/782674/FastCGI%20%E5%9C%A8%20stderr%20%E4%B8%AD%E5%8F%91%E9%80%81%EF%BC%9A%E2%80%9C%E4%B8%BB%E8%84%9A%E6%9C%AC%E6%9C%AA%E7%9F%A5%E2%80%9D%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BB%8E%E4%B8%8A%E6%B8%B8%E8%AF%BB%E5%8F%96%E5%93%8D%E5%BA%94%E5%A4%B4.png)
需要帮助在新服务器上找到问题。我正在使用 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;
}