set_userdata data da 502 error de puerta mal mientras utiliza NGINX

Estoy usando CodeIgniter 3.1 y servidor NGINX como servidor en vivo y Apache como local, mi proyecto se ejecuta sin problemas en el servidor local Apache, pero no está bien en el servidor NGINX Live. on live its work fine but apparently when I open a page who's code contain lot of set_userdata, like i have many pages having tables and that tables have filter and in filters I uses set_userdata. cuando esta función intenta establecer datos para el filtro da error "502 Bad Gateway" nginx.

function stats()
{

        $userId = $this->uri->segment(4);
        
    $clientCompanyId = $this->uri->segment(3);
    $checkUser = false;
    
    $this->session->set_userdata('pStatsFilterStatusNameShow','');
    $this->session->set_userdata('pStatsFilterStatusId', '');
    $this->session->set_userdata('pStatsFilterStatusName', '');
    $this->session->set_userdata('pWon', '');
    $this->session->set_userdata('pStatsFilterClientAccount', '');
    $this->session->set_userdata('pStatsFilterBusinessType', '');
    $this->session->set_userdata('pStatsFilterAccountsType', '');
    $this->session->set_userdata('pStatsFilterBranchId', '');
    $this->session->set_userdata('pStatsFilterUser', '');
    $this->session->set_userdata('pStatsFilterUserName', '');
    if(is_numeric($clientCompanyId)){
        $this->session->set_userdata('pStatsFilterClientAccount', $clientCompanyId);

        $checkUser =true;

    }else{
        $business_type_id = str_replace('type_','',$clientCompanyId);
        $this->session->set_userdata('pStatsFilterBusinessType', $business_type_id);
        if(is_numeric($userId)){
            $checkUser =true;
        }else{
            if($userId=='user'){
                if($this->uri->segment(5)=='company'){
                    $this->session->set_userdata('pStatsFilterAccountsType', 'company');
                    
                }else{
                    $this->session->set_userdata('pStatsFilterAccountsType', 'branch');
                    $branch_id = str_replace('branch_','',$this->uri->segment(5));
                    
                    if($branch_id==0){
                        $this->session->set_userdata('pStatsFilterBranchName', 'Main Branch');

                    }else{
                        $branch = $this->em->find('models\Branches', $branch_id);
                        $this->session->set_userdata('pStatsFilterBranchName', $branch->getBranchName());
                    }
                    $this->session->set_userdata('pStatsFilterBranchId', $branch_id);
                    
                }
            }
            $statusId =$this->uri->segment(6);

        }

    }

    if($checkUser){
        $statsUser = $this->em->find('\models\Accounts', $userId);
        $statsCompanyId = $statsUser->getCompany()->getCompanyId();

        $this->session->set_userdata('pStatsFilterUser', $userId);
        $this->session->set_userdata('pStatsFilterUserName', $statsUser->getFullName());
        $statusId = $this->uri->segment(5);
    }

   

    if($statusId){
        if(is_numeric($statusId)){
            $status = $this->em->find('\models\Status', $statusId);
            $this->session->set_userdata('pStatsFilterStatusId', $statusId);
            $this->session->set_userdata('pStatsFilterStatusNameShow', $status->getText());
            $this->session->set_userdata('pSold', '');
        }else{
            if($statusId=='won'){
                $this->session->set_userdata('pWon', 1);
            }
            $this->session->set_userdata('pStatsFilterStatusName', $statusId);
        }
    }

$this->session->set_userdata('pStatsFilter', 1);

    $this->index();
}

Pregunta hecha hace 3 años, 4 meses, 29 días - Por byteninja


2 Respuestas:

  • El error "502 Bad Gateway" con NGINX generalmente indica un problema en la configuración del servidor web o en la conexión con otro servidor. En tu caso, parece que el problema podría estar relacionado con el tamaño o la configuración de las cookies de sesión al utilizar la función set_userdata() de CodeIgniter para establecer múltiples datos en la sesión.

    Aquí tienes algunas sugerencias para resolver este problema:

    • Verifica la configuración de NGINX: Asegúrate de que NGINX esté configurado correctamente para manejar solicitudes con cookies grandes o con muchas cookies. Puedes revisar la configuración de NGINX para ajustar los límites de tamaño de cookies si es necesario.
    • Limita la cantidad de datos en las cookies de sesión: En lugar de establecer múltiples datos con `set_userdata()`, considera agrupar estos datos en un solo array o objeto y guardar ese único dato en la sesión. Esto puede reducir la carga de cookies y potencialmente solucionar el problema del error "502 Bad Gateway".
    • Usa una base de datos para almacenar datos de sesión: Si la cantidad de datos en la sesión es muy grande, considera almacenar los datos de sesión en una base de datos en lugar de en cookies. Puedes configurar CodeIgniter para que gestione la sesión de esta manera.
    • Optimiza tu código: Revisa tu código para asegurarte de que estás utilizando eficientemente la manipulación de sesiones. Puedes simplificar la lógica de tu función `stats()` y revisar si realmente necesitas almacenar todos los datos en la sesión o si puedes obtenerlos de otra manera cuando los necesites.

    Si después de realizar estos ajustes el error persiste, te recomendaría revisar los logs de NGINX para obtener más información sobre lo que está causando el error "502 Bad Gateway" específicamente en tu servidor.

    Respondida el Dec 18, 2020 a las 08:11 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error "502 Bad Gateway" generalmente indica un problema en el servidor proxy o en el servidor de destino. En este caso, NGINX actúa como proxy y Apache es el servidor de destino.

    Aquí hay algunos pasos para solucionar el problema:

    • Verifica la configuración de NGINX: Asegúrate de que la configuración de NGINX sea correcta y que no haya problemas de sintaxis. Verifica que la configuración del proxy hacia Apache esté configurada correctamente.
    • Verifica el servidor Apache: Asegúrate de que el servidor Apache esté funcionando y respondiendo a las solicitudes. Verifica los registros de errores de Apache para ver si hay algún error.
    • Desactiva temporalmente el almacenamiento en caché: Intenta desactivar temporalmente el almacenamiento en caché en NGINX para ver si resuelve el problema. Esto se puede hacer comentando la directiva "proxy_cache" en el archivo de configuración de NGINX.
    • Aumenta el tiempo de espera: Intenta aumentar el tiempo de espera ("proxy_connect_timeout" y "proxy_read_timeout") en la configuración de NGINX para dar más tiempo a Apache para responder.
    • Habilita el modo de depuración: Habilita el modo de depuración en NGINX agregando la directiva "error_page 502 /debug.html;" en el bloque "http". Esto proporcionará información adicional sobre el error.
    • Verifica la función `set_userdata`: Asegúrate de que la función `set_userdata` se utiliza correctamente en el código de CodeIgniter. Verifica que los nombres de las variables de sesión sean válidos y que los datos se estén estableciendo correctamente.
    • Intenta utilizar un depurador: Utiliza un depurador como Xdebug para depurar el código CodeIgniter y verificar el flujo de ejecución. Esto puede ayudar a identificar cualquier problema con el almacenamiento de datos de sesión.

    Si los pasos anteriores no resuelven el problema, es posible que existan otros problemas subyacentes con la configuración o el código. Te recomiendo consultar los registros de Nginx y Apache para obtener más información sobre el error.

    Respondida el Dec 18, 2020 a las 08:22 - por Gemini

    Votos positivos: 0 | Votos negativos: 0