Como usar a ferramenta Servidor proxy how-to-use-the-proxy-server-tool

O servidor proxy atua como um servidor intermediário que transmite solicitações entre um cliente e um servidor. O servidor proxy rastreia todas as interações cliente-servidor e gera um log de toda a comunicação TCP. Isso permite monitorar exatamente o que está acontecendo, sem precisar acessar o servidor principal.

Você pode encontrar o servidor proxy na sua instalação AEM aqui:

crx-quickstart/opt/helpers/proxy-2.1.jar

Você pode usar o servidor proxy para monitorar toda a interação cliente-servidor, independentemente do protocolo de comunicação subjacente. Por exemplo, você pode monitorar os seguintes protocolos:

  • HTTP para páginas da Web
  • HTTPS para páginas da Web seguras
  • SMTP para mensagens de email
  • LDAP para gerenciamento de usuários

Por exemplo, você pode posicionar o servidor proxy entre dois aplicativos que se comunicam por meio de uma rede TCP/IP; por exemplo, um navegador da Web e AEM. Isso permite monitorar exatamente o que acontece quando você solicita uma página do CQ.

Iniciando a Ferramenta de Servidor Proxy starting-the-proxy-server-tool

Iniciar o servidor na linha de comando:

java -jar proxy-2.1.jar <host> <remoteport> <localport> [options]

Parâmetros

<host>

Esse é o endereço do host da instância do CRX à qual você deseja se conectar. Se a instância estiver no computador local, isso significa localhost.

<remoteport>

Esta é a porta do host da instância do CRX de destino. Por exemplo, o padrão de uma instalação de AEM recém-instalada é 4502 e o padrão para uma instância de autor AEM recém-instalada é 4502.

<localport>

Essa é a porta no computador local à qual você deseja se conectar para acessar a instância do CRX por meio do proxy.

Opções

-q (modo silencioso)

Não grava a saída na janela do console. Use-a se não quiser retardar a conexão ou se registrar a saída em um arquivo (consulte a opção -logfile ).

-b(modo binário)

Se estiver procurando combinações específicas de bytes no tráfego, ative o modo binário. A saída conterá a saída hexadecimal e de caracteres.

-t (entradas de log de carimbo de data/hora)

Adiciona um carimbo de data/hora a cada saída de log. O carimbo de data e hora é expresso em segundos, portanto, pode não ser adequado para a verificação de solicitações únicas. Use-a para localizar eventos que ocorreram em um horário específico se você usar o servidor proxy por um período mais longo.

-logfile <filename>(gravar no arquivo de log)

Grava a conversa cliente-servidor em um arquivo de log. Esse parâmetro também funciona no modo silencioso.

-i <numIndentions>(adicionar recuo)

Cada conexão ativa é recuada para melhorar a leitura. O padrão é 16 níveis. Este recurso foi introduzido com proxy.jar version 1.16.

Formato do Log log-format

As entradas de log produzidas por proxy-2.1.jar têm o seguinte formato:

[timestamp (optional)] [Client|Server]-[ConnectionNumber]-[BytePosition] ->[Character Stream]

Por exemplo, uma solicitação de página da Web pode ter a seguinte aparência:

C-0-#000000 -> [GET /author/prox.html?CFC_cK=1102938422341 HTTP/1.1 ]

  • C significa que essa entrada vem do cliente (é uma solicitação para uma página da Web)
  • 0 é o número da conexão (o contador de conexões começa em 0)
  • #00000 o deslocamento no fluxo de bytes. Esta é a primeira entrada, portanto, o deslocamento é 0.
  • [GET <?>] é o conteúdo da solicitação, no exemplo um dos cabeçalhos HTTP (url).

Quando uma conexão é fechada, as seguintes informações são registradas:

C-6-Finished: 758 bytes (1.0 kb/s)
S-6-Finished: 665 bytes (1.0 kb/s)

Isso mostra o número de bytes transmitidos entre o cliente ( C) e o servidor ( S) na sexta conexão e na velocidade média.

Um Exemplo de Saída de Log

Como exemplo, considere uma página que produz o seguinte código quando solicitado:

Exemplo example

Como exemplo, considere um documento html simples no repositório em

/content/test.html

Ao lado de um arquivo de imagem em

/content/test.jpg

O conteúdo de test.html é:

<html>
<head>
    <title>Test</title>
</head>
<body>
    Test<br>
    <img src="test.jpg">
</body>
</html>

Supondo que a instância AEM esteja em execução em localhost:4502, o proxy é iniciado da seguinte maneira:

java -jar proxy.jar localhost 4502 4444 -logfile test.log

A instância do CQ/CRX agora pode ser acessada por meio do proxy em localhost:4444 e toda a comunicação por meio desta porta é registrada em test.log.

Agora, se você observar a saída do proxy, verá a interação entre o navegador e a instância do AEM.

Na inicialização, o proxy gera o seguinte:

starting proxy for localhost:4502 on port 4444
using logfile: <some-dir>/crx-quickstart/opt/helpers/test.log

Agora abra um navegador e acesse a página de teste:

http://localhost:4444/content/test.html

E você vê que o navegador faz uma solicitação GET para a página:

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 -> [ ]

A instância AEM responde com o conteúdo do arquivo 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>]

Usos do servidor proxy uses-of-the-proxy-server

Os cenários a seguir ilustram algumas das finalidades para as quais o Servidor Proxy pode ser usado:

Verificar Cookies e seus Valores

O exemplo de entrada de log a seguir mostra todos os cookies e seus valores enviados pelo cliente na sexta conexão aberta desde que o proxy foi iniciado:

C-6-#000635 -> [Cookie: cq3session=7e39bc51-ac72-3f48-88a9-ed80dbac0693; Show=ShowMode; JSESSIONID=68d78874-cabf-9444-84a4-538d43f5064d ]

Verificando Cabeçalhos e seus Valores

O exemplo de entrada de log a seguir mostra que o servidor pode fazer uma conexão keep-alive e o cabeçalho de comprimento de conteúdo foi definido corretamente:

S-7-#000017 -> [Connection: Keep-Alive ]
 ...
 S-7-#000107 -> [Content-Length: 124 ]

Verificando se a opção Keep-Alive funciona

Keep-alive é um recurso do HTTP que permite que um cliente reutilize a conexão TCP com o servidor para fazer várias solicitações (para o código da página, imagens, folhas de estilos e assim por diante). Sem o keep-alive, o cliente precisa estabelecer uma nova conexão para cada solicitação.

Para verificar se o keep-alive funciona:

  • Inicie o servidor proxy.
  • Solicitar uma página.
  • Se o keep-alive estiver funcionando, o contador de conexões nunca deverá ultrapassar 5 a 10 conexões.
  • Se o keep-alive não estiver funcionando, o contador de conexões aumentará rapidamente.

Localizando Solicitações Perdidas

Se você perder solicitações em uma configuração de servidor complexa, por exemplo, com um firewall e um Dispatcher, poderá usar o servidor proxy para descobrir onde a solicitação foi perdida. Se houver um firewall:

  • Iniciar um proxy antes de um firewall
  • Iniciar outro proxy após um firewall
  • Use-os para ver até que ponto as solicitações estão chegando.

Solicitações suspensas

Se você tiver solicitações de alteração de vez em quando:

  • Inicie o proxy.
  • Aguarde ou grave o log de acesso em um arquivo com cada entrada com um carimbo de data e hora.
  • Quando a solicitação for interrompida, você poderá ver quantas conexões estavam abertas e qual solicitação está causando problemas.
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2