Я использую nginx для восходящего потока на другой набор серверов в зависимости от географии пользователя. Кажется, что модуль geoip не возвращает никаких значений для локальных адресов (localhost, 192.168.0.X ... и т. Д.). https://www.maxmind.com/en/faq
Я пытаюсь справиться с этим следующим образом: 1) проверьте, является ли текущий IP-адрес локальным:
geo $isLanIP {
default no;
192.168.0.0/24 yes;
127.0.0.1 yes;
}
2) в зависимости от стоимости isLanIP proxy_pass другой апстрим:
if ($isLanIP ~ no){
proxy_pass http://$geoip_country_code.SearchControllerUpStream/;
break;
}
if ($isLanIP ~ yes){
proxy_pass http://local.SearchControllerUpStream/;
break;
}
при запуске nginx ошибка «proxy_pass» не может иметь часть URI в месте, заданном регулярным выражением, или внутри с именем lo. ... .conf: 64 '. L64 - это второй вызов proxy_pass.
BR.
серверный блок:
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;
}
}