Als ich den folgenden Fehler sah, bemerkte ich, dass die PNG-Datei anscheinend durch FastCGI geht. Ich kenne mich mit Nginx nicht so gut aus, aber es scheint mir falsch zu sein.
Ich habe versucht, PHP-Code in eine PNG-Datei einzufügen, und er wurde nicht ausgeführt.
[warn] 2507#0: *35744 an upstream response is buffered to a temporary file /www/wdlinux/nginx-1.8.1/fastcgi_temp/9/60/0000012609 while reading upstream, client: 888.888.888.888, server: example.com, request: "GET /images/25.png HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-55-cgi.sock:", host: "example.com", referrer: "http://example.com/app.php"
Gibt es hier ein Problem oder ist das nur meine Naivität? Ich hätte gedacht, dass Nginx nur statische Dateien sendet und sie nicht über CGI-bezogene Verfahren sendet.
Einige möglicherweise zugehörige Dateien:
# nginx conf conf/nginx.conf
# Created by http://www.wdlinux.cn
# Last Updated 2010.06.01
user www www;
worker_processes 3;
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile 5120;
events {
use epoll;
worker_connections 5120;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 256k;
large_client_header_buffers 8 64k;
client_max_body_size 100m;
limit_conn_zone $binary_remote_addr zone=one:32k;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
log_format wwwlogs '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
#include default.conf;
include vhost/*.conf;
}
naproxy.conf
proxy_connect_timeout 30s;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 32k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Vhost-Datei
server {
listen 80;
root /mnt/web/example/public_html;
server_name example.com example.com;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ \.php(.*)$ {
fastcgi_pass unix:/tmp/php-55-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $2;
include fcgi.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri $uri/ /?$args;
}
}
Wenn weitere Dateien benötigt werden, werde ich sie hinzufügen. Vielen Dank!
Antwort1
Wenn Sie keine Datei /mnt/web/example/public_html/images/25.png
in Ihrem System haben, sendet nginx die Anforderung http://example.com/images/25.png
an den PHP-Prozessor.
Dieses Verhalten wird in der try_files $uri $uri/ /?$args;
Zeile angegeben.