Notes
Как добавить кастомный header в Nginx?
Внимание у вас уже должен быть установлен nginx + php-fpm(инструкцию можно посмотреть тут: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04)
1. откроем для редактирования конфигурационный файл nginx, написав:
sudo nano /etc/nginx/sites-available/default
2. В разделе "server" в самом конце, перед закрывающей фигурной скобкой "}", добавим Nginx метод "add_header":
server {
...
add_header 'My-custom-header-request_id_and_timestamp' request_id:${request_id},msec:${msec};
}
3. Проверим конфигурационный файл на ошибки:
sudo nginx -t
4. Перезагрузим Nginx для применения необходимых изменений:
sudo systemctl reload nginx
5. Откроем в браузере консоль и вкладку "Network". Перейдем в адресной строке по адресу нашего сервера, по окончании загрузки убедимся в наличии нашего нового заголовка "My-custom-header-request_id_and_timestamp".
Как создать и настроить кастомный Access лог в Nginx?
Внимание у вас уже должен быть установлен nginx + php-fpm(инструкцию можно посмотреть тут: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04)
1. откроем для редактирования конфигурационный файл nginx, написав:
sudo nano /etc/nginx/nginx.conf
2. В разделе "http" после системных параметров access_log и error_log , добавим свою кастомную настройку лога:
http {
...
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" $request_id '
'$geoip_country_name $geoip_country_code '
'$geoip_region_name $geoip_city ';
access_log /var/log/nginx/custom_access.log custom;
...
3. Проверим конфигурационный файл на ошибки:
sudo nginx -t
4. Перезагрузим Nginx для применения необходимых изменений:
sudo systemctl reload nginx
5. В директории /var/log/nginx/ убедимся в появлении файла "custom_access.log"(в случае если были обращения к серверу).
Как на PHP найти нужный header?
$url = "http://10.10.42.11/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
// Retudn headers seperatly from the Response Body
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
//$headers = substr($response, 0, $header_size);
//$body = substr($response, $header_size);
curl_close($ch);
header("Content-Type:text/plain; charset=UTF-8");
$seek_header= 'My-custom-header-request_id_and_timestamp';
list($headers,$content) = explode("\r\n\r\n",$response,2);
foreach (explode("\r\n",$headers) as $hdr){
if (!empty(stristr($hdr,$seek_header))){
echo $hdr.PHP_EOL;
}
}