Magento站点(Nginx+PHP-FPM+Varnish)出现空白页及FastCGI错误排查求助
Magento站点(Nginx+PHP-FPM+Varnish)出现空白页及FastCGI错误排查求助
大家好,我刚在新服务器上部署了Magento站点,环境配置是Nginx+PHP-FPM+Varnish,但现在网站打开后是空白页,只显示File not found文本。同时Nginx错误日志里出现了FastCGI相关的报错,麻烦帮忙排查下问题!
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"
Nginx访问日志
[17/Dec/2022:12:31:14 +0100] "GET / HTTP/2.0" 404 36 "-" "Mozilla/5.0
当前站点的Nginx配置文件
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)(/.+)$; } }
补充:引入的Magento自带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; }
备注:内容来源于stack exchange,提问作者user3715053
相关产品推荐
相关产品推荐

