O Nginx não permite o sub_filter em if in location
level de acordo com a documentação que você precisa para "subir" um nível
location /mylocation {
error_page 418 = @sub_location;
recursive_error_pages on;
if ($induceScript = 1) {
return 418;
}
}
location @sub_location {
sub_filter "</body>" "<div class='induced' <font color=red size=8>Induced Text </font></div></body>";
sub_filter_types *;
sub_filter_once off;
proxy_pass http://www.example.com;
proxy_set_header Accept-Encoding *;
#add any other config you need here
}
Isso faz a verificação de $induceScript = 1
, se for verdade, ele retorna um erro 418
, que é então passado para a localização @sub_location
que tem as diretivas sub_filter
agora no nível da localização