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.