я создал файл headers.js для обработки запроса из header. Файл назодится в etc/nginx.
function get_code(r) {
// Получение значения заголовка 'code'
return r.headersIn['code'] || '-';
}
function get_versionvk(r) {
// Получение значения заголовка 'versionVk'
return r.headersIn['versionVk'] || '-';
}
function get_access_token(r) {
// Получение значения заголовка 'access_token'
return r.headersIn['access_token'] || '-';
}
export default { get_code, get_versionvk, get_access_token };
Далее в nginx.conf пробую вытащить заголовки и записать их в логи.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
load_module modules/ngx_http_js_module.so;
events {
worker_connections 1024;
}
http {
js_import headers.js;
js_set $custom_code headers.get_code;
js_set $custom_versionvk headers.get_versionvk;
js_set $custom_access_token headers.get_access_token;
resolver 8.8.8.8;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'"$custom_code" "$custom_versionvk" "$custom_access_token"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
Но в логах вижу 178.78.4.201 - - [11/Feb/2024:20:30:04 +0000] "GET /service2/ HTTP/1.1" 200 158 "-" "axios/1.6.5"
Пробовал еще так, тоже ничего не пишет по заголовкам headers. Тоже писал это в nginx.conf.
map $http_code $custom_code {
default "-";
"~^(?P<value>.+)$" $value;
}
Не пойму как прочитать заголовки, т.к. тут в коде тоже пусто
location /service4 {
set $code $arg_code;
set $access_token $arg_access_token;
set $versionVk $arg_versionVk;
proxy_pass https://api.vk.com/method/execute?code=$arg_code&access_token=$arg_access_token&v=$arg_versionVk;
proxy_bind 7******.156;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Запрос отправляю на сервер так:
async checkIsClosedGroup(code, ip) {
const access = process.env['ACCESS_TOKEN'];
const versionVk = process.env['VERSION_VK'];
try {
const response = await firstValueFrom(
this.httpService.get<any>(`${ip}`, { headers: {
'code': encodeURIComponent(code),
'versionVk': versionVk,
'access_token': access,
},
})
.pipe(
catchError((error: AxiosError) => {
if (error.response && 'data' in error.response && error.response.data != undefined) {
this.logsServicePostsAdd.error(
`checkIsClosedGroup1 error`,
`ошибка получения постов в группе ${error.response} код ${code}`,
);
}
throw new Error(error );
}),
),
);
if (!response) {
this.logsServicePostsAdd.error(
`checkIsClosedGroup4 error`,
`Неверный формат данных от VK API ${response} запрос не успешный для ${code}`,
);
}
const data = response.data;
console.log(data.error.request_params)
return data;
} catch (err) {
console.error('Error:', err.request_params);
await this.logsServicePostsAdd.error(
`ошибка получения постов в группе проверяем ids ${new Date().toTimeString()} для ${err}`, 'ERRORS',
);
}
}