Nginx reescreve - Quando alguém usa o sinalizador de quebra (pattern target break)?

3

Os estados do wiki nginx:

break - completes processing of current rewrite directives and non-rewrite processing continues within the current location block only.

É para dizer que:

Se o padrão de reescrita corresponder, processe a reescrita (reescreva para o destino), mas não processe nenhuma das outras regras no bloco de localização e processe todas as outras diretivas (cache, proxy etc.) no bloco de localização?

Estou falando do sinalizador de quebra conforme:

BANDEIRA DE ALVOS DO PADRÃO

Não é o "intervalo"; diretiva.

ATUALIZAÇÃO:

O cenário em que eu estava pensando em usar isso é o seguinte, um local simples com várias reescritas:

location /path/ {
    rewrite ^/user_request_one$ /target_one;
    rewrite ^/user_request_two$ /target_two;
    ... other directives ...
}

Talvez eu não entenda como o nginx manipula reescreve, mas acima, se target_one for correspondido, o nginx ainda testará a regra de reescrita target_two? A adição de um sinalizador de quebra ao target_one instruiria o nginx a parar de analisar quaisquer outras regras de reescrita?

A razão principal pela qual estou perguntando é porque temos alguns blocos de localização com várias regras de reescrita e estou inseguro quanto ao tempo. O nginx está testando padrões de reescrita "mais abaixo", mesmo que um seja compatível com "próximo ao topo". Essas reescritas são muito únicas, então, se uma for atingida, não há absolutamente nenhuma razão para o nginx testar quaisquer outras no mesmo bloco de localização. Nós só queremos ter certeza de que não estamos desperdiçando nenhum ciclo de cpu precioso, já que este é um servidor bastante carregado.

Espero que isso ajude.

Obrigado.

    
por anonymous-one 10.09.2012 / 23:07

1 resposta

1

Há uma boa explicação na página HttpRewriteModule: link

É possível, em primeiro lugar, analisar "Como o nginx processa uma solicitação" primeiro: link

EDIT: sim, sua interpretação é o que quebra faz

o intervalo manterá o processamento da solicitação dentro da mesma diretiva de localização, para que você possa aplicar como ele é tratado mesmo se o caminho reescrito, sob circunstâncias normais (isto é, solicitado diretamente), for manipulado por uma diretiva de localização diferente. Note que isso só acontece quando usado dentro de uma diretiva de localização.

Desculpe, não consegui expandir ainda mais, estou correndo pela porta, mas fique à vontade para pedir detalhes de qualquer parte da minha resposta.

    
por 11.09.2012 / 01:48

Tags