nginx:[emerg]“proxy_pass”不能在正则表达式给出的位置中包含 URI 部分,也不能在命名的 lo 内包含 URI 部分

nginx:[emerg]“proxy_pass”不能在正则表达式给出的位置中包含 URI 部分,也不能在命名的 lo 内包含 URI 部分

我使用 nginx 根据用户的地理位置将数据上传到不同的服务器组。似乎 geoip 模块不会返回本地地址(localhost、192.168.0.X 等)的任何值。 https://www.maxmind.com/en/faq

我尝试按如下方式处理此问题:1)检查当前 IP 是否是本地 IP:

    geo $isLanIP {
     default no;
     192.168.0.0/24 yes;
     127.0.0.1 yes;
    }

2)取决于局域网IPproxy_pass 不同的上游:

    if ($isLanIP ~ no){
     proxy_pass http://$geoip_country_code.SearchControllerUpStream/;
     break;
    }

    if ($isLanIP ~ yes){
     proxy_pass http://local.SearchControllerUpStream/;
     break;
    } 

启动 nginx 时,出现错误““proxy_pass”不能在正则表达式给出的位置或名为 lo 的范围内具有 URI 部分。... .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;
    }
 }

相关内容