Conjuntos de Regra para Balanceadores de Carga
Use conjuntos de regras compostos por ações aplicadas ao tráfego do listener de um balanceador de carga.
Um conjunto de regras é um conjunto nomeado de regras associadas a um balanceador de carga e aplicadas a um ou mais listeners nesse balanceador de carga. Para aplicar um conjunto de regras a um listener, primeiro crie o conjunto de regras que contém as regras. Regras são objetos que representam ações aplicadas ao tráfego em um listener do balanceador de carga. O conjunto de regras faz parte da configuração do balanceador de carga. Você pode especificar o conjunto de regras a ser usado ao criar ou atualizar um listener para o balanceador de carga.
Você pode incluir os seguintes tipos de regras em um conjunto de regras:
-
Regras de controle de acesso, que restringem o acesso aos recursos do aplicativo com base na origem da solicitação.
-
Regras de método de acesso, que especificam os métodos HTTP permitidos.
-
Regras de redirecionamento de URL, que roteiam as solicitações HTTP recebidas para outro URL de destino.
-
Regras de cabeçalho de solicitação e resposta, que adicionam, alteram ou removem cabeçalhos de solicitação ou resposta de HTTP.
-
Regras de cabeçalho HTTP, que especificam o tamanho do cabeçalho HTTP e quais caracteres são permitidos nos cabeçalhos.
-
Máximo de regras de conexão do listener, que especificam o máximo de conexões IP para um listener.
Os conjuntos de regras só se aplicam a listeners HTTP.
Aplique um conjunto de regras existentes ao editar um listener. Você pode aplicar o mesmo conjunto de regras a vários listeners no mesmo balanceador de carga.
Os conjuntos de regras não são compartilhados entre os balanceadores de carga. Para usar o mesmo conjunto de regras em outro balanceador de carga, você deverá criar um novo conjunto de regras idêntico nesse balanceador de carga.
Até 20 regras são permitidas em um conjunto de regras. Você pode associar um máximo de 50 regras a um balanceador de carga.
Você pode executar as seguintes tarefas de gerenciamento do conjunto de rotas de caminho:
Para obter mais informações sobre como gerenciar listeners de balanceador de carga, consulte Listeners para Balanceadores de Carga.
Regras de Controle de Acesso
As regras de controle de acesso permitem o acesso aos recursos do aplicativo com base em condições de correspondência especificadas pelo usuário para um endereço IP ou para um intervalo de endereços IP. Se você não especificar regras de controle de acesso, a regra padrão será permitir todo tipo de tráfego. Se você adicionar regras de controle de acesso, o balanceador de carga negará qualquer tráfego que não corresponder às regras.
O serviço aceita apenas strings no formato CIDR (classless inter-domain routing) (x.x.x.x/y ou x:x::x/y
) para a condição de correspondência.
Especifique 0.0.0.0/0
ou ::/0
para estabelecer uma correspondência com todo o tráfego de entrada.
Somente regiões da Nuvem do Governo dos EUA permitem valores IPv6.
Regras de Método de Acesso
As regras do método de acesso especificam os métodos HTTP permitidos no listener associado. O balanceador de carga não envia uma solicitação não permitida para os servidores de backend e retorna uma resposta 405 Method Not Allowed
com uma lista dos métodos permitidos. Você pode associar apenas uma lista de métodos permitidos a um listener específico.
Por padrão, você só pode especificar os métodos HTTP padrão definidos no Registro do Método HTTP. A lista de métodos HTTP é extensível. Se você precisar configurar métodos HTTP personalizados, entre em contato com o My Oracle Support para remover a restrição da sua tenancy. O seu aplicativo de backend deve ser capaz de tratar os métodos especificados.
A lista a seguir mostra os métodos HTTP padrão:
ACL |
BASELINE-CONTROL |
BIND |
CHECKIN |
CHECKOUT |
CONNECT |
COPY |
DELETE |
GET |
HEAD |
LABEL |
LINK |
LOCK |
MERGE |
MKACTIVITY |
MKCALENDAR |
MKCOL |
MKREDIRECTREF |
MKWORKSPACE |
MOVE |
OPTIONS |
ORDERPATCH |
PATCH |
POST |
PRI |
PROPFIND |
PROPPATCH |
PUT |
REBIND |
REPORT |
SEARCH |
TRACE |
UNBIND |
UNCHECKOUT |
UNLINK |
UNLOCK |
UPDATE |
UPDATEREDIRECTREF |
VERSION-CONTROL |
Regras de Redirecionamento de URL
As regras de redirecionamento de URL especificam como rotear as solicitações HTTP recebidas para outro URL de destino. As regras de redirecionamento de URL só se aplicam a listeners HTTP. Você configura cada regra de redirecionamento para um listener específico e um caminho especificado. Um listener pode ter apenas uma regra de redirecionamento para um caminho de URL de entrada específico.
Ao criar uma regra de redirecionamento de URL, você especifica a string do caminho e a condição de correspondência que o serviço usa para avaliar um URL de entrada para redirecionamento. Você também define o URL de redirecionamento e o código de resposta.
Avaliação da String do Caminho de Entrada
Você especifica a string de caminho, ou o padrão, para avaliação no URL de entrada. Por exemplo:
/video
Você também especifica a condição de correspondência a ser aplicada durante a avaliação do URL de entrada para redirecionamento. Os tipos de correspondência disponíveis são:
-
FORCE_LONGEST_PREFIX_MATCH
O sistema procura uma string de caminho da regra de redirecionamento que tenha a correspondência mais longa da parte inicial do caminho do URL de entrada.
-
EXACT_MATCH
O caminho do URL de entrada deve corresponder exatamente à string de caminho especificada.
-
PREFIX_MATCH
A parte inicial do caminho do URL de entrada deve corresponder exatamente à string de caminho especificada.
-
SUFFIX_MATCH
A parte final do caminho do URL de entrada deve corresponder exatamente à string de caminho especificada.
A string de caminho do URL de entrada não pode incluir uma consulta.
Construção do URL de Redirecionamento
Você define o URL de redirecionamento aplicado à solicitação original. As regras de redirecionamento de URL reconhecem os seguintes componentes de URL:
<protocol>://<host>:<port>/<path>?<query>
Você pode especificar uma string literal ou fornecer um token para qualquer componente. Os tokens extraem valores do URL da solicitação HTTP recebida. Os tokens fazem distinção entre maiúsculas e minúsculas. Por exemplo, {host}
é um token válido, mas {HOST}
não é.
-
Protocolo
O protocolo HTTP a ser usado no URL de redirecionamento. Os valores válidos são HTTP e HTTPS.
O token
{protocol}
extrai o protocolo do URL da solicitação HTTP recebida. É o único token válido para essa propriedade. -
Host
O nome de domínio ou o endereço IP válido a ser usado no URL de redirecionamento.
O token
{host}
extrai o host do URL da solicitação HTTP recebida. Todos os tokens de Redirecionamento de URL são válidos para essa propriedade. Você pode usar qualquer token mais de uma vez.As chaves {} só são válidas nessa propriedade para delimitar tokens.
-
Porta
A porta de comunicação a ser usada no URL de redirecionamento. Os valores válidos incluem números inteiros de 1 a 65535.
O token
{port}
extrai a porta do URL da solicitação HTTP recebida. É o único token válido para essa propriedade. -
Caminho
O caminho do URL HTTP a ser usado no URL de redirecionamento. Para omitir o caminho do URL de redirecionamento, defina esse valor como uma string vazia.
O token
{path}
extrai a string de caminho do URL da solicitação HTTP recebida. Todos os tokens de Redirecionamento de URL são válidos para essa propriedade. Você pode usar qualquer token mais de uma vez.Se a string do caminho não começar com o token
{path}
, ela deverá começar com uma barra /. -
consulta
A string de consulta a ser usada no URL de redirecionamento. Para omitir todos os parâmetros de consulta de entrada do URL de redirecionamento, defina esse valor como uma string vazia.
O token
{query}
extrai a string de consulta do URL da solicitação HTTP recebida. Todos os tokens de Redirecionamento de URL são válidos para essa propriedade. Você pode usar qualquer token mais de uma vez.Se a string de consulta não começar com o token
{query}
, ela deverá começar com um ponto de interrogação? .Você pode especificar vários parâmetros de consulta como uma única string. Separe cada parâmetro de consulta com um e comercial &.
Se a string de consulta especificada resultar em um URL de redirecionamento terminando com? ou &, o último caractere será truncado. Por exemplo, se o URL de entrada for
http://host.com:8080/documents
e o valor da propriedade de consulta for?lang=en&{query}
, o URL de redirecionamento seráhttp://host.com:8080/documents?lang=en
. O sistema trunca o e comercial final & porque o URL de entrada não incluiu um valor para substituir o token{query}
.
A falha em especificar um valor para pelo menos um campo de componente de URL pode resultar em um loop de redirecionamento.
Construção Manual do URL de Redirecionamento
A Console fornece campos de entrada de texto para cada componente do URL. Você também pode especificar manualmente o URL de redirecionamento completo.
Você pode manter os caracteres literais de um token ao especificar valores para o caminho e as propriedades de consulta do URL de redirecionamento. Use uma barra invertida \ como caractere de escape para os caracteres\, { e }. Por exemplo, se o URL da solicitação HTTP recebida for /video
, o valor da propriedade do caminho /example{path}123\{path\}
aparecerá no URL de redirecionamento construído como /example/video123{path}
.
Alguns exemplos de string de caminho e consulta:
-
/example/video/123 aparece como
/example/video/123
no URL de redirecionamento. -
/example{path} é exibido como
/example/video/123
no URL de redirecionamento quando/video/123
é o caminho no URL da solicitação HTTP de entrada. -
{path}/123 é exibido como
/example/video/123
no URL de redirecionamento quando/example/video
é o caminho no URL da solicitação HTTP recebida. -
{path}123 aparece como
/example/video123
no URL de redirecionamento quando/example/video
é o caminho no URL da solicitação HTTP recebida. -
/{host}/123 aparece como
/example.com/123
no URL de redirecionamento quandoexample.com
é o nome do host no URL da solicitação HTTP de entrada. -
/{host}/{port} é exibido como
/example.com/123
no URL de redirecionamento quandoexample.com
é o nome do host e123
é a porta no URL da solicitação HTTP de entrada. -
/{query} é exibido como
/lang=en
no URL de redirecionamento quando a consulta élang=en
no URL da solicitação HTTP de entrada. -
lang=en&time_zone=PST aparece como
lang=en&time_zone=PST
no URL de redirecionamento. -
{query} é exibido como
lang=en&time_zone=PST
no URL de redirecionamento quandolang=en&time_zone=PST
é a string de consulta na solicitação HTTP de entrada. Se a solicitação HTTP de entrada não tiver parâmetros de consulta, o token{query}
será renderizado como uma string vazia. -
lang=en&{query}&time_zone=PST aparece como
lang=en&country=us&time_zone=PST
no URL de redirecionamento quandocountry=us
é a string de consulta na solicitação HTTP recebida. Se a solicitação HTTP recebida não tiver parâmetros de consulta, esse valor será renderizado comolang=en&time_zone=PST
. -
protocol={protocol}&hostname={host} é exibido como
protocol=http&hostname=example.com
no URL de redirecionamento quando o protocolo éhttp
e o nome do host éexample.com
na solicitação HTTP de entrada. -
port={port}&hostname={host} é exibido como
port=8080&hostname=example.com
no URL de redirecionamento quando a porta é8080
e o nome do host éexample.com
no URL da solicitação HTTP de entrada.
Código de Resposta
Você pode especificar o código do status HTTP que deverá ser retornado quando a solicitação recebida for redirecionada. Os códigos de resposta válidos para redirecionamento da especificação HTTP padrão são:
-
301 Moved Permanently
-
302 Found
-
303 See Other
-
307 Temporary Redirect
-
308 Permanent Redirect
O valor padrão é 302 Found
.
Regras de Cabeçalho de Solicitação e Resposta
As regras de cabeçalho de solicitação e resposta adicionam, alteram ou removem cabeçalhos de solicitação ou de resposta HTTP. Essas regras podem ajudá-lo a enviar metadados aos seus servidores de backend para executar tarefas como:
-
Identificar qual listener enviou uma solicitação.
-
Notificar um servidor de backend sobre o encerramento de SSL.
Exemplos de como conjuntos de regras podem ajudá-lo a melhorar a segurança do site incluem:
-
Adicionar cabeçalhos para impedir que domínios externos usem iframes no seu site.
-
Remover cabeçalhos de depuração, como "Server", enviados por servidores de backend. Essa ação ajuda a ocultar os detalhes da implementação do seu backend.
-
Adicionar o cabeçalho "strict-transport-security" às respostas com um valor adequado. Esse cabeçalho ajuda a garantir que o acesso ao seu site seja apenas por HTTPS.
-
Adicionar o cabeçalho "x-xss-protection" com um valor adequado. Esse cabeçalho ajuda a reforçar a proteção por XSS (cross-site scripting) presente nos browsers modernos.
-
Adicionar o cabeçalho "x-content-type" com um valor adequado. Esse cabeçalho ajuda a impedir ataques com base na troca de tipo de conteúdo.
A adição ou remoção do cabeçalho do Host incorporado ou de um dos Cabeçalhos X, conforme descrito em Cabeçalhos HTTP "X-", não remove nem substitui o valor do cabeçalho. Em vez disso, a execução dessas ações pode acrescentar outros valores ou duplicar o cabeçalho.
Exemplo: Notificar o WebLogic de que o Balanceador de Carga Encerrou o Protocolo SSL
Você pode configurar o seu balanceador de carga para executar o encerramento do protocolo SSL. Muitas vezes, os seus aplicativos de backend requerem a notificação dessa ação. Por exemplo, o processamento de transações HTTP on-line de e-commerce do WebLogic procura o cabeçalho WL-Proxy-SSL
para confirmar que uma solicitação foi recebida por protocolo SSL. Você pode usar conjuntos de regras para adicionar esse cabeçalho no listener do balanceador de carga.
Por motivos de segurança, WebLogic ignora esse cabeçalho, a menos que você marque a caixa de seleção WebLogic Plug-in Ativado na Console de Administração do WebLogic.
-
Crie um conjunto de regras com as definições a seguir. Para obter mais informações, consulte Criando um Conjunto de Regras.
-
Escolha a opção Adicionar Cabeçalho de Solicitação na lista Ação.
-
Insira
WL-Proxy-SSL
como nome do Cabeçalho. -
Defina o Valor do cabeçalho:
-
Se o seu balanceador de carga estiver configurado para executar o encerramento de SSL, defina esse valor como "verdadeiro".
-
Se o ponto de encerramento de SSL estiver no servidor Web em que o plug-in opera, defina este valor como "falso".
-
-
-
Crie um listener ou edite um existente e adicione o novo conjunto de regras. Consulte Listeners para obter mais informações.
Regras de Cabeçalho HTTP
As regras de cabeçalho HTTP especificam o tamanho do cabeçalho HTTP e quais caracteres são permitidos nos cabeçalhos.
- A regra de cabeçalho HTTP tamanho do buffer de cabeçalho HTTP aumenta o tamanho de um buffer usado para ler o cabeçalho de solicitação do cliente HTTP e a resposta do servidor de backend dos 8 KB padrão até 64 KB. O buffer é usado no controle de overflow. Cada linha de cabeçalho de solicitação ou resposta precisa caber nesse buffer. Portanto, os aplicativos que usam linhas de cabeçalho HTTP grandes precisam ajustar esse parâmetro.
- A regra de cabeçalho HTTP Permitir caracteres inválidos no cabeçalho HTTP permite que números, hifens e sublinhados sejam incluídos nos cabeçalhos HTTP.
Consulte Criando um Conjunto de Regras para obter mais informações sobre como implementar regras de cabeçalho HTTP.
Máximo de Regras de Conexão do Listener
A regra de conexão máxima de listener permite aplicar um número máximo uniforme de conexões de listener para todos os endereços IP e também especificar substituições a esse valor uniforme para endereços IP individuais que você identifica.
-
Você pode definir um valor máximo de conexões padrão que se aplique a todos os endereços IP que não tenham máximos específicos definidos. Se você não definir esse valor máximo padrão, não haverá limite para o número de conexões que um IP pode fazer com um listener.
-
Você também pode definir valores máximos para um ou mais endereços IP que substituem o valor máximo de conexões padrão.
Consulte Criando um Conjunto de Regras para obter mais informações sobre como implementar a regra de conexão máxima do listener.