是否可以在 nginx 配置文件中检索会话值?

是否可以在 nginx 配置文件中检索会话值?

这只是一个简单的问题。我有一个 php webapp,它设置了一个会话 cookie,其中包含用户名、isAdmin 等值。有什么方法可以从 nginx 配置文件中提取这些信息吗?

log_format custom ' "TEST: $cookie_PHPSESSID"';

这将为我提供 cookie 的会话 ID,但我需要它的内容,但我找不到任何方法来检索它。

使用永久性 cookie 是可行的,但这并不是一个好主意,因为用户可以轻松更改 cookie 值。

提前致谢,Fili

答案1

无法直接在 Nginx 配置文件中检索会话值。Nginx 配置文件是静态配置,在启动时解析并用于处理传入请求。它无法访问任何动态运行时信息,例如由 PHP 应用程序处理的会话数据。

但是,您可以使用一些变通方法来访问 Nginx 中的会话数据。一种方法是使用 Nginx 的反向代理设置。在此设置中,Nginx 充当前端服务器,将请求转发到处理动态内容的后端应用程序服务器(例如 Apache 或 PHP-FPM)。

location / {
    proxy_pass http://backend;
    proxy_set_header Cookie $http_cookie;
}

另一种方法是将会话数据存储在 Nginx 和 PHP 应用程序都可以访问的共享存储中。例如,您可以将会话数据存储在数据库或键值存储中,并使用 Nginx 根据 Cookie 中的会话 ID 从存储中检索数据。

相关内容