나는 nginx를 사용하고 있습니다PHP-FPM
내 애플리케이션에서는 모든 URL을 리디렉션해야 합니다 index.php
(nginx conf 참조).
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;
}
일부 성능 문제를 분석하기 위해 fpm 상태 페이지를 사용하고 싶었습니다. 하지만 상태 페이지에 실제 요청 URI가 표시되지 않습니다.
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
따라서 현재 어떤 페이지가 처리되고 있는지 알기가 어렵습니다. fpm-status 페이지에 추가 정보를 추가하거나 요청 URI를 변경할 수 있습니까?
답변1
이것은 나에게 효과적이었습니다.
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;
}
참조:https://jolicode.com/blog/how-to-see-full-request-uri-in-fpm-status
답변2
여전히 답변이 없습니다. 5년 전에 버그가 발생했습니다.https://bugs.php.net/bug.php?id=72319대답도 없이.
답변3
세트 가 있는 자체 블록을 블록에 추가해야 합니다 fastcgi_index
.
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;
}
답변4
내 문제 해결 방법은 다음과 같습니다.
fastcgi_param PATH_INFO $request_uri;