Primeiro, lembre-se de que se é mau e evite colocar qualquer coisa, exceto rewrite
ou return
dentro de if
; uma solução alternativa sugeria usar error_page
e return
para alterar a localização usada para processar a solicitação.
Como já foi respondido aqui , a maneira de reutilizar as configurações de localização no nginx é movê-los para um arquivo separado e include
desse arquivo em location
blocos.
Combinar essas soluções resulta em:
/etc/nginx/validation_code.conf
# a lot of validation code here
config principal
location /location1/ {
error_page 418 = @proxy;
recursive_error_pages on;
if ($arg_api_key = a_valid_api_key) {
return 418;
}
include /etc/nginx/validation_code.conf;
}
location /location2/ {
include /etc/nginx/validation_code.conf;
}
location @proxy {
proxy_pass http://localhost:8080;
}
Você também pode pensar em usar um local nomeado para seu código de validação, em vez de criar um arquivo separado; No entanto, você precisará de alguns truques para mudar para esse local nomeado, por exemplo, outro par error_page
/ return
ou algo parecido com
try_files /nonexistent @validation