我使用 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;
}
}