Журнал доступа php-fpm должен содержать пользовательские переменные, установленные из приложения php - PullRequest
2 голосов
/ 08 мая 2019

Pre

Текущая настройка выполняется с помощью apache + mod_php. Мы можем поместить в код доступа apache userId и sessionId из кода с помощью apache_setenv, а затем в журнале доступа мы получили:

"\"%{USER_ID}e\" \"%{SESSION_ID}e\""

Это необходимо для того, чтобы мы могли легко отлаживать информацию на основе журналов доступа.

Feature

Рассмотрим следующую настройку: приложение php, работающее на php-fpm с nginx в качестве обратного прокси.

Я хочу перейти, чтобы перейти в контейнерное приложение, использующее php-fpm и nginx. Проблема в том, что я не таблица для записи динамических переменных в журнал nginx или php-fpm, используя $_ENV. Данные существуют в дампе $_SERVER, но затем недоступны ни из php-fpm, ни из nginx-acces log.

Вопрос

  1. Если я могу установить fastcgi_param в nginx из переменной env, которая поступает из приложения, то дело закрывается. Использование lua в nginx с os.getenvvariable должно помочь?
  2. В журнале доступа php-fpm %{userId}e и %{sessionId}e несмотря на то, что они существуют в var_dump($_SERVER). Если я перейду из nginx fastcgi_param со статическим значением, я смогу получить доступ к такой переменной окружения в php-fpm.

Есть ли другие варианты, чтобы сделать это, или LUA в nginx - единственный вариант. В настоящее время я собираюсь попробовать.

1 Ответ

1 голос
/ 09 мая 2019

Мое решение завершено с использованием пользовательских заголовков http:

Header("UserId: 1");
Header("SessionId: session_id");

, а затем в журнале доступа nginx

log_format main "$upstream_http_userid $upstream_http_sessionid";
...