
ちょっとした質問です。ユーザー名、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 に基づいてストアからデータを取得できます。