nginx 設定ファイル内でセッション値を取得することは可能ですか?

nginx 設定ファイル内でセッション値を取得することは可能ですか?

ちょっとした質問です。ユーザー名、isAdmin などの値を含むセッション Cookie を設定する PHP Web アプリケーションがあります。その情報を nginx 構成ファイルから抽出する方法はありますか?

log_format custom ' "TEST: $cookie_PHPSESSID"';

これにより、Cookie のセッション ID が提供されますが、そのコンテンツが必要なのに、それを取得する方法が見つかりません。

永続的な Cookie を使用することはできますが、ユーザーが Cookie の値を簡単に変更できるため、お勧めできません。

よろしくお願いします、フィリ

答え1

Nginx 構成ファイル内のセッション値を直接取得することはできません。Nginx 構成ファイルは、起動時に解析され、受信リクエストを処理するために使用される静的構成です。PHP アプリケーションによって処理されるセッション データなどの動的なランタイム情報にはアクセスできません。

ただし、Nginx のセッション データにアクセスするために使用できる回避策がいくつかあります。 1 つの方法は、Nginx でリバース プロキシ設定を使用することです。 この設定では、Nginx は、動的コンテンツを処理する Apache や PHP-FPM などのバックエンド アプリケーション サーバーにリクエストを転送するフロントエンド サーバーとして機能します。

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

もう 1 つの方法は、Nginx と PHP アプリケーションの両方からアクセスできる共有ストレージにセッション データを保存することです。たとえば、セッション データをデータベースまたはキー値ストアに保存し、Nginx を使用して、Cookie 内のセッション ID に基づいてストアからデータを取得できます。

関連情報