[alibaba/tengine]location uri传递问题

2024-07-10 806 views
4
location /aaa {
     set $allow_ip '';
     if ( $remote_addr ~ 192.168.0.220){set $allow_ip 1;}
     if ( $allow_ip != 1) {
        return 503;
     }
     proxy_pass http://192.168.0.3:1080/path;
 }

当我的location配置如上时,我的0.3web服务器的访问日志是:

GET /path/aaa HTTP/1.0

而同样的配置文件,我在nginx-1.12.1上配置,0.3收到的访问是:

GET /path HTTP/1.0

回答

5

你是说 在tengine上用如上配置,192.168.0.3这台服务器收到的是下面的请求?

GET /path/aaa HTTP/1.0
0

对的, 同样的配置文件放在tengine 2.1.2和nginx-1.12.1上, 后端服务器192.168.0.3访问日志不一致。 tengine作为前端负载时,后端192.168.0.3日志为:GET /path/aaa HTTP/1.0,而实际应该是不追加才对吧。

3

默认的nginx---->0.3 0.3上请求为 GET /path。 实际上如果你location都要proxy pass到/path,这也是你需要的话,直接用rewrite 或者return都可以,而且消除了歧义。

2

@monkeyzhu123

location /aaa {
     set $allow_ip '';
     if ( $remote_addr ~ 192.168.0.220){set $allow_ip 1;}
     if ( $allow_ip != 1) {
        return 503;
     }
     proxy_pass http://192.168.0.3:1080/path;
 }
location /aaa {
     proxy_pass http://192.168.0.3:1080/path;
 }

不是怎么去实现proxy pass到/path路径,这么说吧,以上两个配置,按说是在同一个客户端IP访问情况下后端(192.168.0.3)接收是一致的请求(路径),nginx是这样,而tengine不是。 我主要是想了解这里是个bug,还是说是tengine在location块里与nginx还是有一些区别的。