Nginx 位置重写规则匹配 GeoIP 标头值

Nginx 位置重写规则匹配 GeoIP 标头值

我正在寻找编写一个简单的重写规则,我基本上想说以下内容

如果请求的 URI 是 text/index.html (或 test/)并且 GeoIP 组织等于“我的 GeoIP 值”,则服务器 test/index2.html

我尝试了一些指令,但没有一个能像我预期的那样发挥作用。

我目前的设置是

map $geoip_org $redirectMe {
    default 0;
    'My GeoIP Org Value' 1;
}

server{
 ....

    location /test {
        try_files $uri index.html;

        expires -1;

        if ( $redirectMe ) {
            rewrite ^/test/index.html$ /test/test2.html break;
        }
    }

   .... 
}

我发现,无论我的 IP 组织如何,它要么不重定向任何内容,要么一直重定向,就好像它缓存了重定向,我以为 expires -1 会解决它。

我还注意到,无论请求是否被重定向,我都会收到 HTTP 304。

有人能指点一下吗?我以为这很简单。我也尝试过不使用地图,而是将比较放在位置内,但这行不通,使用服务器外的地图可以让我以后更轻松地更改逻辑。

更新 答案是它确实在工作,只是当我运行服务 nginx reload 时缓存没有刷新。

解决方案是使用 service nginx force-reload(或者重启,虽然这有点过头了),它会起作用

答案1

答案是它确实在工作,只是当我运行服务 nginx reload 时缓存没有刷新。

解决方案是使用 service nginx force-reload(或者重启,虽然这有点过头了),这样就可以了

相关内容