pre
当前设置是用apache mod_php制成的。我们可以使用apache_setenv
从代码中放入Apache访问日志用户ID和SessionID设置,然后在访问日志中获得:
""%{USER_ID}e" "%{SESSION_ID}e""
这对于我们必须根据访问日志轻松调试信息是必要的。
功能
考虑以下设置:以nginx作为反向代理在php-fpm上运行的PHP应用程序。
我想移动到使用PHP-FPM和NGINX的容器化应用程序。问题在于,我不是使用$_ENV
将动态变量记录到NGINX或PHP-FPM日志的表。数据存在于$_SERVER
的转储中,但不可能从php-fpm
或nginx-acces
日志中访问。
问题
- 如果我能够从来自应用程序案例的ENV变量中设置NGINX中的
fastcgi_param
。与OS一起在Nginx中使用LUA。 - 在php-fpm中,访问日志格式
%{userId}e
和%{sessionId}e
尽管存在于var_dump($_SERVER)
中。如果我从Nginxfastcgi_param
传递具有静态值,我可以在php-fpm中访问此类环境变量。
是否还有其他选项可以使此操作或nginx中的lua是唯一的选择。目前我将要尝试。
我的解决方案使用自定义HTTP标头结束:
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"