Estou usando o nginx para envio a um conjunto diferente de servidores, dependendo do geo do usuário. Como parece, o módulo geoip não retorna nenhum valor para os endereços locais (localhost, 192.168.0.X ... etc). link
Estou tentando manipular isso da seguinte forma: 1) verifique se o ip atual é um ip local:
geo $isLanIP {
default no;
192.168.0.0/24 yes;
127.0.0.1 yes;
}
2) dependendo do valor de isLanIP proxy_pass de um upstream diferente:
if ($isLanIP ~ no){
proxy_pass http://$geoip_country_code.SearchControllerUpStream/;
break;
}
if ($isLanIP ~ yes){
proxy_pass http://local.SearchControllerUpStream/;
break;
}
ao iniciar o nginx, o erro '"proxy_pass" não pode ter parte do URI no local dado pela expressão regular, ou dentro do named lo. ... .conf: 64 'é gerado. L64 é a segunda chamada proxy_pass.
BR.
bloco de servidores:
server {
listen 8080;
server_name host;
access_log /var/log/nginx/host.access.log main;
error_page 404 = 404.html;
error_page 403 = 403.html;
root /home/user/app;
location /SearchController {
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
if ($isLanIP ~ no){
proxy_pass http://$geoip_country_code.SearchControllerUpStream/;
break;
}
if ($isLanIP ~ yes){
proxy_pass http://local.SearchControllerUpStream/;
break;
}
limit_except POST {
deny all;
}
}
location / {
include emergingthreats-deny.conf;
include projecthoneypot-deny.conf;
include spamhaus-deny.conf;
index index.htm index.html;
}
}