Eu tenho um script PHP rodando em um servidor Apache que é responsável por desconectar todas as sessões do usuário. Para isso, ele faz um loop que se identifica como a sessão que deve ser desconectada e a destrói. Este procedimento não tem eco.
O log do Apache retorna o código HTTP 200, informando que tudo correu bem.
Mas o NGINX retorna o seguinte erro.
[error] 512#512: *2699 upstream sent too big header while reading response header from upstream, client: <public-ip>, server: server01.example.com, request: "GET /tste.php HTTP/1.1", upstream: "http://192.168.50.2:80/tste.php", host: "server02.example.com"
O que pode causar esse problema?
script PHP:
<?php
error_reporting(-1);
ini_set('display_errors', 1);
if (!function_exists('deleteSession')) {
function deleteSession($targetSessionID)
{
// 1. commit session if it's started.
if (session_id()) {
session_commit();
}
// 2. store current session id
session_start();
$current_session_id = session_id();
session_commit();
// 3. hijack then destroy session specified.
session_id($targetSessionID);
session_start();
session_destroy();
session_commit();
// 4. restore current session id. If don't restore it, your current session will refer to the session you just destroyed!
session_id($current_session_id);
session_start();
session_commit();
}
}
$sessions = [
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj',
'soadjasjosldjsaoidjasoijdsajdsaj'
];
foreach ($sessions as $session) {
deleteSession($session);
}
Presumo que seu Nginx esteja sendo executado como um servidor proxy, enviando solicitações para o Apache (upstream aqui), que está enviando um cabeçalho HTTP maior do que o Nginx está configurado para ler e, portanto, excedeu o tamanho do buffer definido na configuração do Nginx. Tente aumentar o tamanho do buffer
proxy_buffer_size
para um valor maior e reinicie o servidor Nginx.Aqui está um bom recurso para ajustar sua configuração de proxy Nginx que você considera dar uma olhada.