【发布时间】:2021-11-18 17:06:15
【问题描述】:
我正在使用 Nginx 并将所有对 .php 的请求传递给 PHP-FPM。
如何获取 PHP-FPM 的访问日志以显示真实的客户端 IP 地址而不是 127.0.0.1?
php-fpm-access.log
127.0.0.1 - 25/Sep/2021:18:51:03 -0700 "GET /test.php" 200
127.0.0.1 - 25/Sep/2021:18:51:03 -0700 "GET /test.php" 200
127.0.0.1 - 25/Sep/2021:18:54:42 -0700 "GET /test.php" 200
nginx 虚拟主机
location ~* \.php {
try_files $uri =404;
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param X-REAL-IP $remote_addr;
fastcgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
}
php-fpm 池
[domain]
user = www
group = www
listen = 127.0.0.1:9001
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 60
pm.max_requests = 500
access.log = /var/log/php-fpm-access.log
php_admin_flag[log_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/error.log
nginx fastcgi_params
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_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
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;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
【问题讨论】: