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; } }
Leave a reply