:::: MENU ::::

Handling HTTP errors with Apache and Tomcat using mod_jkRécupérer les erreurs HTTP avec Apache et Tomcat en utilisant mod_jk

  • Mar 07 / 2014
  • 0
Linux

Handling HTTP errors with Apache and Tomcat using mod_jkRécupérer les erreurs HTTP avec Apache et Tomcat en utilisant mod_jk

When you are working with web server in frontend (Apache in this example) and backend application servers (Tomcat here), you may wish to customize your error pages depending on the HTTP error code returned (either from the web server or application server).

Pre-requisites

For the following example, you will need as pre-requisites at least those versions:

  • Web Server Apache >= 2.2.x
  • Mod JK >= 1.2.27 (rule extensions are not available in earlier versions)

Apache configuration

If you want to handle any error coming from your web server or from your application servers, you will need to perform some changes in your configuration to allow the handling. First of all you will need to set up some parameters in your Apache configuration file (in apache2.conf file directly or in your VirtualHost definitions).

In my example, I am handling any HTTP error code between:

  • HTTP 400 and HTTP 405
  • HTTP 500 and 504

I am using an only file (written in PHP) allowing me to send back a simple HTML page to the user depending on the HTTP error code received.

Here is what I’ve configured in my apache2.conf file for handling any error listed above:

The errorhandler.php file could be like that (feel free to customize it as you want with a beautiful CSS theme, for the example I’ve used a basic configuration ;)):

mod_jk configuration

Once you’re done with the main configuration of Apache, you will have to specify to Apache that you want to handle any HTTP error coming from the application servers. For that, you will have to use the rule extension use_server_errors when mounting an access point to a worker through mod_jk.

By default, for a mounting point you are using:

But if you want to handle any HTTP 40x error coming from this worker, you will have to add the use_server_errors extension to your mounting point:

To handle any HTTP 50x error:

Or another option to handle both errors using just one command:

You are now handling any error received from your application server with your web server allowing you to customize it as you want.

Feel free to read more about this rule extension on the official website.

Lorsque vous travaillez avec un serveur web en frontal (Apache dans cet exemple) et des serveur d’application en backend (ici Tomcat), vous pouvez souhaitez customiser vos pages d’erreur en fonction du code d’erreur HTTP retourné (qu’il provienne du serveur web ou d’un serveur d’application).

Pré-requis

Pour l’exemple suivant, vous aurez besoin au minimum des versions suivantes:

  • Web Server Apache >= 2.2.x
  • Mod JK >= 1.2.27 (les “rule extensions” ne sont pas disponibles dans les versions précédentes)

Configuration Apache

Si vous souhaitez récupérer n’importe quelle erreur provenant de votre serveur web ou de vos serveurs d’application, vous aurez besoin d’effectuer quelques modification dans la configuration pour l’autoriser. Tout d’abord, vous aurez besoin d’éditer certains paramètres dans votre fichier de configuration Apache (dans le fichier apache2.conf directement ou dans vos définitions de VirtualHost).

Dans mon exemple, je récupère tout code d’erreur HTTP entre :

  • HTTP 400 et HTTP 405
  • HTTP 500 et 504

J’utilise uniquement un fichier pour récupérer ces erreurs (écrit en PHP) qui me permet de renvoyer une simple page HTML à l’utilisateur en fonction du code d’erreur reçu.

Ci-dessous, la configuration définie dans le fichier apache2.conf pour récupérer les erreurs listées précédemment :

Le fichier errorhandler.php peut ressembler à cela (mais libre à vous de le customiser selon vos souhaits avec un magnifique thème CSS, pour l’exemple j’ai utilisé une configuration très basique ;)) :

Configuration du mod_jk

Une fois que vous avez fini la configuration principale d’Apache, vous allez devoir spécifier à Apache que vous souhaitez récupérer toute erreur HTTP provenant de vos serveurs d’application. Pour cela, vous allez utiliser l’extension use_server_errors lorsque vous montez un point d’accès avec mod_jk.

Par défaut, pour un point de montage vous utilisez :

Mais si vous souhaitez récupérer toute erreur HTTP 40x provenant de ce worker, vous allez devoir ajouter la directive use_server_errors à votre commande de montage :

Pour récupérer toute erreur HTTP 50x :

Ou encore, si vous souhaitez récupérer l’ensemble de ces précédentes plages d’erreur, vous pouvez utiliser la commande :

Vous récupérez maintenant toute erreur reçue de vos serveurs d’application sur votre serveur web vous permettant leur personnalisation comme vous le souhaitez.

Si vous souhaitez en lire davantage sur ces extensions, n’hésitez pas à visiter le site officiel.

Leave a comment

You must be logged in to post a comment.

Question ? Contact