Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
Cuando se utiliza Nginx como proxy inverso frente a un servidor Apache, puede ocurrir el siguiente error en los registros de Nginx:
[error] 349#349: *44 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 172.68.92.148, server: example.com, request: "GET /favicon.ico HTTP/2.0", upstream: "https://192.168.20.14:443/favicon.ico", host: "example.com", referrer: "https://example.com/path"
[error] 349#349: *46 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 172.70.57.184, server: example1.com, request: "GET / HTTP/2.0", upstream: "https://192.168.20.17:443/", host: "example1.com"
[error] 349#349: *12 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 162.158.123.23, server: example1.com, request: "GET /favicon.ico HTTP/2.0", upstream: "https://192.168.20.17:443/favicon.ico", host: "example1.com", referrer: "https://example1.com/"
Causa del problema
Este error ocurre debido a un conflicto en la configuración de Apache cuando se utiliza la directiva RemoteIPProxyProtocol On. Esta configuración no es compatible con el tráfico SSL enviado desde Nginx a Apache a través del protocolo HTTPS, lo que provoca que la conexión SSL falle durante el "handshake".
Solución
Para resolver este problema, es necesario deshabilitar la configuración RemoteIPProxyProtocol en Apache y asegurarse de que se utilice únicamente la directiva RemoteIPHeader para pasar la dirección IP real del cliente desde Nginx.
Pasos a seguir
- Editar el archivo de configuración de Apache: Abra el archivo de configuración principal de Apache, generalmente ubicado en
/etc/apache2/apache2.conf:sudo nano /etc/apache2/apache2.conf - Comentar o eliminar la línea
RemoteIPProxyProtocol On: Busque la línea siguiente:RemoteIPProxyProtocol On
Y coméntela añadiendo un#al inicio de la línea, o elimínela por completo:#RemoteIPProxyProtocol On - Asegurarse de que
RemoteIPHeaderesté configurado correctamente: Asegúrese de que la directivaRemoteIPHeaderesté configurada para aceptar el encabezadoX-Forwarded-For, que es enviado por Nginx:RemoteIPHeader X-Forwarded-For - Guardar los cambios y reiniciar Apache: Guarde el archivo y cierre el editor. Luego reinicie Apache para aplicar los cambios:
sudo systemctl restart apache2 - Verificar la configuración en Nginx: Asegúrese de que Nginx esté configurado para pasar el encabezado
X-Forwarded-For. Esto suele estar configurado por defecto, pero puede verificarse en el bloqueserverolocationdel archivo de configuración de Nginx:proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - Revisar los registros: Después de realizar los cambios, monitoree los registros de Nginx y Apache para confirmar que el error ha sido resuelto y que las solicitudes se procesan correctamente.
Conclusión
El error "peer closed connection in SSL handshake while SSL handshaking to upstream" suele deberse a una configuración incorrecta de Apache al usar RemoteIPProxyProtocol con SSL. Al deshabilitar esta opción y utilizar solo RemoteIPHeader X-Forwarded-For, se soluciona el problema y se asegura que Nginx pase correctamente la IP del cliente al servidor Apache.