Я запускаю приложение на AWS 'Elastic Beanstalk, используя конфигурацию Node.js, работающую на 64-битной Amazon Linux / 4.5.0 с Nginx.
Я хотел бы добавить заголовок запроса "X-My-Header "как поле для access.log.За исключением этого, я бы взял создание нового файла журнала, используя составные стандартные журналы nginx + мой заголовок.Я нашел несколько похожих вопросов, в частности, о входе в систему с помощью nginx, но аспект EB бросает дополнительную кривую с тем, как обновляются конфиги nginx через файл конфигурации /.ebextensions.
Я выполнил создание файл журнала, но он ничего не заполняет.Я также попытался просто обновить файл access.log, но, похоже, этого тоже не произошло.Я видел, как другие люди, добавляющие заголовки, использовали бы формат «$ http_», и похоже, что заголовок http-запроса «X-Header-Example» отформатирован в «$ http_header_example» (см. «$ Http_user_agent» в составном по умолчанию в nginx), хотя и не хочу тратить время на это предположение, обратите внимание, что я добавил и «$ http_x-my-header», и «$ http_x_my_header».
Попытка 1: обновить существующий формат access.log
files:
/etc/nginx/conf.d/01_proxy.conf:
owner: root
group: root
content: |
log_format my_log_format '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" - "$http_x_my_header" - "$http_x-my-header"';
access_log /var/log/nginx/access.log my_log_format;
Результат: access.log не содержит никаких дополнительных полей.У него даже нет пустых ""
s или -
.
Попытка 2: создайте новый файл журнала
files:
/etc/nginx/conf.d/01_proxy.conf:
owner: root
group: root
content: |
log_format my_log_format '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" - "$http_x_my_header" - "$http_x-my-header"';
access_log /var/log/nginx/new_log.log my_log_format;
Результат: new_log.log теперь появляется в var/log/nginx
при экспорте логов с дашборда EB.Тем не менее, он полностью пуст.
Я читал некоторые другие подобные вопросы, упоминающие удаление файлов и перезапуск сервера, иногда помогает.Я попытался перезапустить приложение и даже полностью перестроить среду с помощью панели мониторинга EB, но ни один из них не привел к другим результатам.
Я в значительной степени основал свое решение на этой средней статье , раздел 2.1.Однако, когда я попытался добавить container_command
в мой файл .config, вся моя среда перестала работать.Мне пришлось вернуться к другому развертыванию, а затем перестроить среду, чтобы она снова заработала.
Любые советы?
Моя цель - связать этот заголовок запроса с поступающими запросами. В идеалеЯ мог бы обновить существующий по умолчанию access.log.Я согласен на отдельный файл.Или, если у вас есть какие-либо другие предложения относительно того, как я могу получить доступ к этой информации, я весь слух!Спасибо.
Изменить Новая попытка:
Здесь показывает, что вы можете полностью заменить файл nginx.config по умолчанию, поэтому я попытался удалить другой файл и вместо этого скопировать /вставка значения по умолчанию из medium article ранее в /.ebextensions/nginx/nginx.config
файл, за исключением добавления туда моих изменений.Я обновил log_format main
, чтобы включить мои "$http_x_my_header"
значения.
К сожалению, развертывание не удалось с этим сообщением:
Файл конфигурации .ebextensions / nginx / nginx.config в приложенииверсия содержит недопустимый YAML или JSON.Исключение YAML: недопустимый Yaml: ожидается '', но обнаружен скаляр в "", строка 7, столбец 1: include / usr / share / nginx / modules ... ^, исключение JSON: недопустимый JSON: неожиданный символ (u) в позиции0 .. Обновите файл конфигурации.
Неправильная строка - include /usr/share/nginx/modules
, которая существует и прекрасно работает по умолчанию, предоставленной в средней статье.
Я надеялся, что это будетгрязное исправление, от которого я мог бы, по крайней мере, получить некоторые результаты, но, увы, похоже, есть еще один контрольно-пропускной пункт.