Назад | Перейти на главную страницу

nginx: [emerg] «proxy_pass» не может иметь часть URI в месте, заданном регулярным выражением, или внутри с именем lo

Я использую 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;
    }
 }