En este breve artículo comparto una experiencia con un servidor Apache retornando "503 Service Unavailable":



De acuerdo a la RFC 2616 que especifica al protocolo HTTP, las respuestas HTTP 503 indican que el servidor está sobrecargado, en mantenimiento, o existe una condición temporal que puede ser aliviada luego de un cierto tiempo.


10.5.4 503 Service Unavailable

   The server is currently unable to handle the request due to a
   temporary overloading or maintenance of the server. The implication
   is that this is a temporary condition which will be alleviated after
   some delay. If known, the length of the delay MAY be indicated in a
   Retry-After header. If no Retry-After is given, the client SHOULD
   handle the response as it would for a 500 response.

      Note: The existence of the 503 status code does not imply that a
      server must use it when becoming overloaded. Some servers may wish
      to simply refuse the connection.

Esta respuesta puede resultar un tanto vaga, más aún luego de llevar a cabo algún intento básico por "resucitar" al servidor Web, como por ejemplo reiniciar el servicio. Sin embargo, es una respuesta que puede presentarse cuando Apache funciona como proxy reverso (front-end para gestionar y procesar solicitudes hacia otros servidores de aplicación como pueden ser Tomcat, Glassfish u otros), y alguno de los servidores back-end no responde.

En tales situaciones (como cada vez que hay un problema u error con Apache) basta con examinar el log de errores del servidor, generalmente ubicado en el archivo /var/log/apache2/error.log:

[Tue Aug 02 09:27:05 2016] [error] (113)No route to host: proxy: HTTP: attempt to connect to 192.168.100.65:80 (192.168.100.65) failed
[Tue Aug 02 09:27:05 2016] [error] ap_proxy_connect_backend disabling worker for (192.168.100.65)

En este caso, se observa que el módulo mod_proxy falla al intentar comunicarse con el servidor back-end en la dirección IP 192.168.100.65.

Si se está trabajando sobre un servidor desconocido o de un cliente, se puede recurrir a grep para buscar la configuración del módulo:

root@www:~# grep -R 192.168.100.65 /etc/apache2/
/etc/apache2/mods-enabled/proxy.conf:ProxyPass /wonderfulapp http://192.168.100.65:80/wonderfulapp
/etc/apache2/mods-enabled/proxy.conf:ProxyPassReverse /wonderfulapp http://192.168.100.65:80/wonderfulapp

El siguiente paso entonces, consiste en verificar que el servidor back-end responda en tiempo y forma.

Si el servidor back-end tiene problemas o directamente no responde, significa que el inconveniente está en otro lado y no en el front-end Apache que retorna "503 Service Unavailable". En este caso en particular, el servidor back-end en cuestión (192.168.100.65) estaba directamente apagado a causa de un problema con el suministro eléctrico. Bastó con iniciarlo nuevamente para resolver el problema.


Tal vez pueda interesarte


Compartí este artículo