Ich verwende nginx mitPHP-FPM
Meine Anwendung erfordert die Weiterleitung aller URLs index.php
(siehe Nginx-Konfiguration).
location / {
root /var/www/app/public/
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
Um einige Leistungsprobleme zu analysieren, wollte ich die FPM-Statusseite verwenden. Aber die Statusseite zeigt mir nicht die tatsächliche Anfrage-URI an
pid: 1369
state: Idle
start time: 03/Sep/2018:17:34:34 +0200
start since: 15
requests: 4
request duration: 29796
request method: GET
request URI: /index.php
content length: 0
user: -
script: /var/www/app/public/index.php
last request cpu: 67.12
last request memory: 6291456
Daher lässt sich nur schwer feststellen, welche Seite derzeit verarbeitet wird. Ist es vielleicht möglich, der FPM-Statusseite einige zusätzliche Informationen hinzuzufügen oder die Anforderungs-URI zu ändern?
Antwort1
Das hat bei mir funktioniert:
location ~ ^/index\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_param SCRIPT_NAME $request_uri;
}
Referenz:https://jolicode.com/blog/wie-man-den-vollständigen-Request-URI-im-FPM-Status-sieht
Antwort2
Immer noch keine Antwort, ein Fehler wurde vor über 5 Jahren geöffnet aufhttps://bugs.php.net/bug.php?id=72319ohne Antwort.
Antwort3
Sie müssen einem Block einen eigenen Block mit einem fastcgi_index
Satz hinzufügen:
location ~ ^/_status$ {
include fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# the following is optional but nice to have
# it will restrict access to the local monitoring system
access_log off;
allow 127.0.0.1;
allow ::1;
deny all;
}
Antwort4
Die Lösung für mein Problem war:
fastcgi_param PATH_INFO $request_uri;