Заметки

Как добавить кастомный 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;
    }
}
Афоризм дня:
Кто не совершает несправедливости – почтенен; но более чем вдвое достоин почета тот, кто и другим не позволяет совершать несправедливости. (618)

Leave a reply