使用nginx和lua实现一个小功能

根据请求url的结尾数字分配不同的服务器进行处理。
如请求url为 XXX?k=123
3为奇数则发送至 odd.com
XXX?k=122
2为偶数则发送至 even.com
我该如何去做,求个思路 QAQ

2个回答

不需要使用lua就可以:

upstream ref1 {
    server odd.com;
}

upstream ref2 {
    server even.com;
} 

server的location /里配置

        set $use_ref1 0;

        if ( $request_uri ~* .(1|3|5|7|9)$) {
            proxy_pass http://ref1;
            set $use_ref1 1;
        }

       if ($use_ref1 = 0) {
           proxy_pass http://ref2;
       }

Intangible_moon
Intangible_moon 谢谢指教,带我找到了正确的航线。
一年多之前 回复
feelcycle_07
默默悟问 回复Intangible_moon: 是的,包括参数
一年多之前 回复
Intangible_moon
Intangible_moon $request_uri 是直接取到了整条uri么
一年多之前 回复

可以使用openresty的access_by_lua的feature,调用ngx.exec(uri, args?)实现访问的重定向

Intangible_moon
Intangible_moon 感谢你的回答,问题在于功能比较简单仅仅需要区分奇偶,能否不使用openresty仅仅使用lua+nginx进行实现呢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!