Le serveur proxy joue le rôle d’un serveur intermédiaire qui relaie les demandes entre un client et un serveur. Il effectue le suivi de toutes les interactions client/serveur et crée un journal de l’ensemble de la communication TCP. Vous pouvez ainsi surveiller ce qui se passe, sans avoir à accéder au serveur principal.
Dans votre installation AEM, le serveur proxy figure à cet emplacement :
crx-quickstart/opt/helpers/proxy-2.1.jar
Vous pouvez utiliser le serveur proxy pour surveiller toutes les interactions client/serveur, quel que soit le protocole de communication sous-jacent. Vous pouvez, par exemple, surveiller les protocoles suivants :
Vous pouvez, par exemple, placer le serveur proxy entre deux applications qui communiquent par un réseau TCP/IP, par exemple, un navigateur web et AEM. Vous pouvez ainsi surveiller ce qui se passe exactement lorsque vous demandez une page CQ.
Démarrez le serveur à l’aide d’une ligne de commande :
java -jar proxy-2.1.jar <host> <remoteport> <localport> [options]
Paramètres
<host>
Il s’agit de l’adresse de l’hôte de l’instance CRX à laquelle vous souhaitez vous connecter. Si l’instance se trouve sur votre ordinateur local, il s’agit de localhost
.
<remoteport>
Il s’agit du port de l’hôte de l’instance CRX cible. Par exemple, le port par défaut d’une nouvelle installation AEM est 4502
. Le port par défaut d’une instance de création AEM nouvellement installée est 4502
.
<localport>
Il s’agit du port de votre ordinateur local auquel vous souhaitez vous connecter pour accéder à l’instance CRX par le biais du proxy.
Options
-q
(mode silencieux)
N’écrit pas la sortie dans la fenêtre de la console. Utilisez cette option si vous ne souhaitez pas ralentir la connexion ou si vous voulez consigner la sortie dans un journal (voir l’option -logfile).
-b
(mode binaire)
Si vous recherchez des combinaisons de bits spécifiques dans le trafic, activez le mode binaire. La sortie contient alors la sortie sous forme hexadécimale et de caractères.
-t
(horodatage des entrées du journal)
Ajoute un horodatage à chaque sortie du journal. L’horodatage est en secondes. Il n’est donc peut-être pas adapté à la recherche de demandes uniques. Utilisez cette option pour rechercher des événements qui se sont produits à une heure spécifique si vous utilisez le serveur proxy pendant une longue période.
-logfile <filename>
(pour écrire dans le fichier journal)
Écrit la communication client-serveur dans un fichier journal. Ce paramètre fonctionne également en mode silencieux.
-i <numIndentions>
(pour ajouter une mise en retrait)
Chaque connexion active est mise en retrait pour une plus grande lisibilité. La valeur par défaut est de 16 niveaux. Cette fonctionnalité a été ajoutée à proxy.jar version 1.16
.
Toutes les entrées du journal générées par proxy-2.1.jar ont le format suivant :
[timestamp (optional)] [Client|Server]-[ConnectionNumber]-[BytePosition] ->[Character Stream]
Une demande de page web peut par exemple ressembler à cette entrée :
C-0-#000000 -> [GET /author/prox.html?CFC_cK=1102938422341 HTTP/1.1 ]
[GET <?>]
correspond au contenu de la demande. Dans cet exemple, il s’agit de l’un des en-têtes HTTP (url).Lorsqu’une connexion se ferme, les informations suivantes sont consignées :
C-6-Finished: 758 bytes (1.0 kb/s)
S-6-Finished: 665 bytes (1.0 kb/s)
Elles indiquent le nombre de bits passés entre le client (C
) et le serveur (S
) au cours de la 6e connexion et à la vitesse moyenne.
Exemple de sortie de journal
À titre d’exemple, prenez une page qui génère le code suivant lors de la demande :
À titre d’exemple, prenez un document html très simple situé dans le référentiel dans :
/content/test.html
avec un fichier image situé dans
/content/test.jpg
Le contenu de test.html
est le suivant :
<html>
<head>
<title>Test</title>
</head>
<body>
Test<br>
<img src="test.jpg">
</body>
</html>
En supposant que l’instance AEM s’exécute sur localhost:4502
, le proxy est démarré de la manière suivante :
java -jar proxy.jar localhost 4502 4444 -logfile test.log
L’instance CQ/CRX est maintenant accessible via le proxy à localhost:4444
. Toutes les communications via ce port sont consignées dans test.log
.
La sortie du proxy montre l’interaction entre le navigateur et l’instance AEM.
Au démarrage, le proxy génère la sortie suivante :
starting proxy for localhost:4502 on port 4444
using logfile: <some-dir>/crx-quickstart/opt/helpers/test.log
Nous ouvrons ensuite un navigateur et nous accédons à la page de test :
http://localhost:4444/content/test.html
Nous pouvons voir que le navigateur effectue une demande GET
pour la page :
C-0-#000000 -> [GET /content/test.html HTTP/1.1 ]
C-0-#000033 -> [Host: localhost:4444 ]
C-0-#000055 -> [Connection: keep-alive ]
C-0-#000079 -> [User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11 ]
C-0-#000212 -> [Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 ]
C-0-#000285 -> [Accept-Encoding: gzip,deflate,sdch ]
C-0-#000321 -> [Accept-Language: en-US,en;q=0.8 ]
C-0-#000354 -> [Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 ]
C-0-#000402 -> [Cookie: login-token=179ba6bd-e0a7-4909-a965-e11c7f2bc2fc%3a618bd8a8-fbaf-43c5-827d-c84c62248c5e_22ee860cc9036fee%3acrx.default%3b21148fb0-eb6c]
C-0-#000543 -> [-43c9-a2b9-c8d40618d8ae%3ad87a3d1a-5e9a-4d5a-bab1-0ee60ad6d8df_d0e4ddce0fcd84b6%3acrx.default%3b5cb95227-ea51-47bf-850b-68ad1dfd7297%3af3bbb6]
C-0-#000684 -> [59-7913-4285-8857-832c087bafd5_c484727d3b3665ad%3acrx.default; ys-cq-siteadmin-tree=o%3Awidth%3Dn%253A240%5EselectedPath%3Ds%253A/content ]
C-0-#000824 -> [ ]
L’instance AEM répond avec le contenu du fichier test.html
:
S-0-#000000 -> [HTTP/1.1 200 OK ]
S-0-#000017 -> [Connection: Keep-Alive ]
S-0-#000041 -> [Server: Day-Servlet-Engine/4.1.24 ]
S-0-#000077 -> [Content-Type: text/html;charset=utf-8 ]
S-0-#000116 -> [Content-Length: 104 ]
S-0-#000137 -> [Date: Mon, 16 Jul 2012 11:23:38 GMT ]
S-0-#000174 -> [Last-Modified: Mon, 16 Jul 2012 11:19:27 GMT ]
S-0-#000220 -> [ ]
S-0-#000222 -> [<html>]
S-0-#000229 -> [<head>]
S-0-#000236 -> [ <title>Test</title>]
S-0-#000260 -> [</head> ]
S-0-#000269 -> [<body>]
S-0-#000276 -> [ Test<br>]
S-0-#000286 -> [ <img src="test.jpg">]
S-0-#000311 -> [</body>]
S-0-#000319 -> [</html>]
Les scénarios suivants montrent à quelles fins le serveur proxy peut être utilisé :
Recherche de cookies et de leur valeur
L’entrée de journal suivante montre tous les cookies et leur valeur envoyés par le client à la sixième connexion ouverte depuis le démarrage du proxy :
C-6-#000635 -> [Cookie: cq3session=7e39bc51-ac72-3f48-88a9-ed80dbac0693; Show=ShowMode; JSESSIONID=68d78874-cabf-9444-84a4-538d43f5064d ]
Recherche d’en-têtes et de leur valeur
L’entrée de journal suivante montre que le serveur est capable d’effectuer une connexion persistante et que l’en-tête de longueur du contenu est configuré correctement :
S-7-#000017 -> [Connection: Keep-Alive ]
...
S-7-#000107 -> [Content-Length: 124 ]
Vérification du fonctionnement de la connexion persistante
Une connexion persistante est une fonctionnalité HTTP qui permet de réutiliser une connexion TCP au serveur pour effectuer plusieurs demandes (pour le code de page, les images, les feuilles de style, etc.). Sans connexion persistante, le client doit établir une nouvelle connexion pour chaque demande.
Pour vérifier si la connexion persistante fonctionne :
Recherche de demandes perdues
Si vous perdez des demandes dans une configuration de serveur complexe (avec un pare-feu et un répartiteur, par exemple), vous pouvez utiliser le serveur proxy pour déterminer où les demandes ont été perdues. Dans le cas d’un pare-feu :
Demandes en suspens
Si, de temps en temps, des demandes sont en suspens :