Il server proxy funge da server intermedio che inoltra le richieste tra un client e un server. Il server proxy tiene traccia di tutte le interazioni client-server e genera un registro dell'intera comunicazione TCP. Questo consente di monitorare esattamente ciò che accade, senza dover accedere al server principale.
Puoi trovare il server proxy nella cartella di installazione appropriata:
È possibile utilizzare il server proxy per monitorare tutte le interazioni client-server, indipendentemente dal protocollo di comunicazione sottostante. Ad esempio, puoi monitorare i seguenti protocolli:
Ad esempio, è possibile posizionare il server proxy tra due applicazioni che comunicano tramite una rete TCP/IP; Ad esempio, un browser web e AEM. Questo ti consente di monitorare esattamente ciò che accade quando richiedi una pagina AEM.
Lo strumento si trova nella cartella /opt/helpers dell'installazione AEM. Per iniziare, digitare:
java -jar proxy.jar <host> <remoteport> <localport> [options]
Gli scenari seguenti illustrano alcuni degli scopi per cui è possibile utilizzare lo strumento Proxy Server:
Verifica la presenza di cookie e dei relativi valori
L'esempio seguente della voce di registro mostra tutti i cookie e i relativi valori inviati dal client sulla 6a connessione aperta dall'avvio del proxy:
C-6-#000635 -> [Cookie: cq3session=7e39bc51-ac72-3f48-88a9-ed80dbac0693; Show=ShowMode; JSESSIONID=68d78874-cabf-9444-84a4-538d43f5064d ]
Verifica delle intestazioni e dei relativi valori L’esempio seguente mostra che il server è in grado di effettuare una connessione keep-alive e che l’intestazione della lunghezza del contenuto è stata impostata correttamente:
S-7-#000017 -> [Connection: Keep-Alive ]
...
S-7-#000107 -> [Content-Length: 124 ]
Verifica del funzionamento di Keep Alive
Mantieni vivo significa che un client riutilizza la connessione al server per il trasporto di più file (codice pagina, immagini, fogli di stile e così via). Senza mantenere in vita, il cliente deve stabilire una nuova connessione per ogni richiesta.
Per verificare se keep-alive funziona:
Ricerca di richieste perse
Se perdi le richieste in un'impostazione server complessa, ad esempio con un firewall e un dispatcher, puoi utilizzare il server proxy per scoprire dove la richiesta è stata persa. In caso di firewall:
Gestione delle richieste
Se si verificano richieste appese di tanto in tanto:
Le voci di registro prodotte da proxy.jar hanno tutti il seguente formato:
[timestamp (optional)] [<b>C</b>lient|<b>S</b>erver]-[ConnectionNumber]-[BytePosition] ->[Character Stream]
Ad esempio, una richiesta per una pagina Web potrebbe avere il seguente aspetto:
C-0-#000000 -> [GET /author/prox.html?CFC_cK=1102938422341 HTTP/1.1 ]
Quando una connessione viene chiusa, vengono registrate le seguenti informazioni:
C-6-Finished: 758 bytes (1.0 kb/s)
S-6-Finished: 665 bytes (1.0 kb/s)
Mostra il numero di byte passati tra client e server alla 6a connessione e alla velocità media.
Rivediamo un semplice modello che produce il seguente codice quando richiesto:
<html>
<head>
<title>Welcome</title>
</head>
<body>
Welcome to Playground<br>
<img src="/logo.gif">
</body>
</html>
Se AEM è in esecuzione su localhost:4303, avvia il server proxy come segue:
java -jar proxy.jar localhost 4303 4444 -logfile test.log
Puoi accedere al server (localhost:4303
) senza il server proxy, ma se si accede tramite localhost:4444
, il server proxy registra la comunicazione. Apri un browser e accedi a una pagina creata con il modello precedente. Dopo di che, guarda il file di log.
Fino alla versione 1.14 di proxy.jar, le voci di registro di una connessione non vengono sincronizzate, il che significa che le voci di registro di una connessione client/server non sono necessarie nell'ordine sequenziale corretto. Le versioni più recenti (>=1.14) del server proxy non hanno questo problema.
All'avvio, le seguenti informazioni vengono scritte nel registro:
starting proxy for localhost:4303 on port 4444
using logfile: C:\CQUnify355default\opt\helpers\test.log
I seguenti campi di intestazione sono elencati all’inizio della prima connessione (0), che richiede la pagina principale di HTML:
C-0-#000000 -> [GET /author/prox.html?CFC_cK=1102936796533 HTTP/1.1 ]
C-0-#000053 -> [Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, appl]
C-0-#000194 -> [ication/x-shockwave-flash, */* ]
C-0-#000227 -> [Accept-Language: de-ch ]
C-0-#000251 -> [Accept-Encoding: gzip, deflate ]
C-0-#000283 -> [User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) ]
C-0-#000347 -> [Host: localhost:4444 ]
Il client richiede una connessione keep-alive, in modo che il server possa inviare più file tramite la stessa connessione:
C-0-#000369 -> [Connection: Keep-Alive ]
Il server proxy è uno strumento utile per verificare se i cookie sono impostati correttamente o meno. Qui vediamo:
C-0-#000393 -> [Cookie: Show=ShowMode; cq3session=3bce15cf-1575-1b4e-8ea6-0d1a0c64738e; JSESSIONID=4161a56b-f193-d748-88a5-e09c5ff7ef2a ]
C-0-#000514 -> [ ]
S-0-#000000 -> [HTTP/1.0 200 OK ]
Il server chiuderà la connessione 0 dopo la richiesta. Mantenere in vita non è possibile, perché la richiesta ha un punto interrogativo. Questo significa che il server non può restituire una versione cache e quindi non può determinare la lunghezza del contenuto a questo punto, che è necessaria per una connessione keep-alive.
S-0-#000017 -> [Connection: Close ]
S-0-#000036 -> [Server: Communique Servlet Engine/3.5.5 ]
S-0-#000077 -> [Content-Type: text/html;charset=iso-8859-1 ]
S-0-#000121 -> [Date: Tue, 14 Dec 2004 09:46:44 GMT ]
S-0-#000158 -> [Set-Cookie: JSESSIONID=4161a56b-f193-d8-88a5-e09c5ff7ef2a;Path=/author ]
S-0-#000232 -> [ ]
In questo caso, il server inizia a inviare il codice HTML alla connessione 0:
S-0-#000234 -> [<html> ]
S-0-#000242 -> [.<head> ]
S-0-#000251 -> [..<title>Welcome</title> ]
S-0-#000277 -> [.</head> ]
S-0-#000287 -> [.<body> ]
S-0-#000296 -> [..Welcome to Playground<br> ]
S-0-#000325 -> [..<img src="/author/logo.gif"> ]
S-0-#000357 -> [.</body> ]
S-0-#000367 -> [</html>]
La connessione 0 viene chiusa immediatamente dopo la distribuzione del file HTML:
C-0-Finished: 516 bytes (0.0 kb/s)
S-0-Finished: 374 bytes (0.0 kb/s)
Ora, l'output inizia per la connessione 1, che scarica l'immagine contenuta nel codice HTML:
C-1-#000000 -> [GET /author/logo.gif HTTP/1.1 ]
C-1-#000031 -> [Accept: */* ]
C-1-#000044 -> [Referer: http://localhost:4444/author/prox.html?CFC_cK=1102936796533 ]
C-1-#000114 -> [Accept-Language: de-ch ]
C-1-#000138 -> [Accept-Encoding: gzip, deflate ]
C-1-#000170 -> [User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) ]
C-1-#000234 -> [Host: localhost:4444 ]
Anche in questo caso, il client richiede una connessione keep-alive:
C-1-#000256 -> [Connection: Keep-Alive ]
C-1-#000280 -> [Cookie: Show=ShowMode; cq3session=3bce15cf-1575-1b4e-8ea6-0d1a0c64738e; JSESSIONID=4161a56b-f193-d748-88a5-e09c5ff7ef2a ]
C-1-#000401 -> [ ]
S-1-#000000 -> [HTTP/1.0 200 OK ]
Per la connessione 1, il server può fornire keep-alive, perché l'immagine è statica e quindi la lunghezza del contenuto è nota.
S-1-#000017 -> [Connection: Keep-Alive ]
S-1-#000041 -> [Server: Communique Servlet Engine/3.5.5 ]
S-1-#000082 -> [Content-Type: image/gif ]
Il server restituisce la lunghezza del contenuto dell'immagine alla connessione 1:
S-1-#000107 -> [Content-Length: 124 ]
S-1-#000128 -> [Date: Tue, 14 Dec 2004 09:46:44 GMT ]
S-1-#000165 -> [ ]
Una volta stabilita la lunghezza del contenuto, il server invia i dati immagine alla connessione 1:
S-1-#000167 -> [GIF87a..........................,.......
...I....0.A..8......YDA.W...1..`i.`..6...Z...$@.F..)`..f..A.....iu.........$..;]
Una volta raggiunto il timeout di conservazione, la connessione 1 si chiude anche:
S-1-Finished: 291 bytes (0.0 kb/s)
C-1-Finished: 403 bytes (0.0 kb/s)
L'esempio precedente è relativamente semplice, perché le due connessioni si verificano in sequenza:
In pratica, una pagina può generare molte richieste parallele per immagini, fogli di stile, file JavaScript, ecc. Ciò significa che i registri hanno voci sovrapposte di connessioni aperte parallele. In tal caso, si consiglia di utilizzare l’opzione -i per migliorare la leggibilità.