php-fpm 访问日志应包含从 php 应用程序设置的自定义变量
php-fpm access log should contain custom variables set from php application
前
当前设置是使用 apache+mod_php 进行的。我们可以使用 apache_setenv
将代码中设置的 apache 访问日志 userId 和 sessionId 放入,然后在访问日志中我们得到:
"\"%{USER_ID}e\" \"%{SESSION_ID}e\""
这对于我们能够根据访问日志轻松调试信息是必要的。
特征
考虑以下设置:php 在 php-fpm 上运行的应用程序,使用 nginx 作为反向代理。
我想转移到使用 php-fpm 和 nginx 的容器化应用程序。问题是我不是 table 使用 $_ENV
将动态变量记录到 nginx 或 php-fpm 日志。数据存在于 $_SERVER
的转储中,但无法从 php-fpm
或 nginx-acces
日志中访问。
问题
- If Im able to set
fastcgi_param
in nginx from env variable that comes from application case is closed.在 nginx 中使用 lua 和 os.getenvvariable 应该可以解决问题吗?
- 在 php-fpm 访问日志格式
%{userId}e
和 %{sessionId}e
中,尽管它们存在于 var_dump($_SERVER)
中。如果我从 nginx fastcgi_param
传递静态值,我可以在 php-fpm. 中访问这样的环境变量
是否有任何其他选项可以实现此目的,或者 nginx 中的 LUA 是唯一的选项。目前正准备试用
我的解决方案使用自定义 http headers:
header("UserId: 1");
header("SessionId: session_id");
然后在nginx访问日志中
log_format main "$upstream_http_userid $upstream_http_sessionid";
如果是 apache 访问日志
LogFormat "%h %l %u %t \"%r\" %>s %O %{UserId}o %{SessionId}o"
前
当前设置是使用 apache+mod_php 进行的。我们可以使用 apache_setenv
将代码中设置的 apache 访问日志 userId 和 sessionId 放入,然后在访问日志中我们得到:
"\"%{USER_ID}e\" \"%{SESSION_ID}e\""
这对于我们能够根据访问日志轻松调试信息是必要的。
特征
考虑以下设置:php 在 php-fpm 上运行的应用程序,使用 nginx 作为反向代理。
我想转移到使用 php-fpm 和 nginx 的容器化应用程序。问题是我不是 table 使用 $_ENV
将动态变量记录到 nginx 或 php-fpm 日志。数据存在于 $_SERVER
的转储中,但无法从 php-fpm
或 nginx-acces
日志中访问。
问题
- If Im able to set
fastcgi_param
in nginx from env variable that comes from application case is closed.在 nginx 中使用 lua 和 os.getenvvariable 应该可以解决问题吗? - 在 php-fpm 访问日志格式
%{userId}e
和%{sessionId}e
中,尽管它们存在于var_dump($_SERVER)
中。如果我从 nginxfastcgi_param
传递静态值,我可以在 php-fpm. 中访问这样的环境变量
是否有任何其他选项可以实现此目的,或者 nginx 中的 LUA 是唯一的选项。目前正准备试用
我的解决方案使用自定义 http headers:
header("UserId: 1");
header("SessionId: session_id");
然后在nginx访问日志中
log_format main "$upstream_http_userid $upstream_http_sessionid";
如果是 apache 访问日志
LogFormat "%h %l %u %t \"%r\" %>s %O %{UserId}o %{SessionId}o"