orlabs/orange

orange invalid URL prefix in

Open

#275 ouverte le 8 juil. 2019

Voir sur GitHub
 (19 commentaires) (0 réactions) (1 assigné)Lua (575 forks)batch import
help wanted

Métriques du dépôt

Stars
 (2 295 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

我查到的相关信息

我查到已经有人提了pr,修复了此bug:https://github.com/orlabs/orange/pull/240/commits/c718ce102425796d55be82c74faa28c68135399b 并且该pr我看已经合并到master中,但是该bug并没有解决。lol,版本及配置信息如下 注:我使用的orange是clone的最新的master分支的代码

使用的Orange版本

Orange: 0.7.0

需求或场景

将/appdata 重写成/api/appdata

使用的插件

Rewrite插件

具体的配置

nginx.conf

server {
        listen       80;
        server_name  orange.com;

        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }

        location / {
            set $upstream_host $host;
            set $upstream_request_uri '';
            set $upstream_url '';
            set $upstream_scheme '';
            set $target '';

            rewrite_by_lua_block {
                local orange = context.orange
                orange.redirect()
                orange.rewrite()
            }

            access_by_lua_block {
                local orange = context.orange
                orange.access()
            }

            # proxy
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Scheme $scheme;
            proxy_pass $upstream_scheme$upstream_url$upstream_request_uri;

            header_filter_by_lua_block {
                local orange = context.orange
                orange.header_filter()
            }

            body_filter_by_lua_block {
                local orange = context.orange
                orange.body_filter()
            }

            log_by_lua_block {
                local orange = context.orange
                orange.log()
            }
        }

        location /robots.txt {
            return 200 'User-agent: *\nDisallow: /';
        }
    }

dashbord中规则如下

{
  "name": "appdata",
  "judge": {
    "type": 0,
    "conditions": [
      {
        "type": "URI",
        "operator": "match",
        "value": "appdata"
      }
    ]
  },
  "extractor": {
    "type": 1,
    "extractions": []
  },
  "handle": {
    "uri_tmpl": "/api/appdata",
    "log": true
  },
  "enable": true
}
期望的结果

浏览器访问:http://orange.com/appdata 日志报错

2019/07/08 19:11:08 [error] 87443#0: *26 invalid URL prefix in "", client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
错误的结果
2019/07/08 19:11:08 [info] 87443#0: *26 [lua] handler.lua:85: rewrite(): ==[Rewrite][PASS THROUGH SELECTOR:cf067719-ff7d-4401-a1bb-35df5def11ad], client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
2019/07/08 19:11:08 [info] 87443#0: *26 [lua] handler.lua:97: rewrite(): [Rewrite][PASS-SELECTOR:cf067719-ff7d-4401-a1bb-35df5def11ad] /appdata, client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
2019/07/08 19:11:08 [info] 87443#0: *26 [lua] handler.lua:36: filter_rules(): [Rewrite] /appdata to:/api/appdata, client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
2019/07/08 19:11:08 [info] 87443#0: *26 [lua] handler.lua:85: rewrite(): ==[Rewrite][PASS THROUGH SELECTOR:cf067719-ff7d-4401-a1bb-35df5def11ad], client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
2019/07/08 19:11:08 [info] 87443#0: *26 [lua] handler.lua:97: rewrite(): [Rewrite][PASS-SELECTOR:cf067719-ff7d-4401-a1bb-35df5def11ad] /api/appdata, client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
2019/07/08 19:11:08 [info] 87443#0: *26 [lua] handler.lua:95: access(): ==[Divide][PASS THROUGH SELECTOR:f302f4bf-1cb9-48c4-b40b-1f2051d4420e], client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
2019/07/08 19:11:08 [error] 87443#0: *26 invalid URL prefix in "", client: 192.168.90.26, server: orange.com, request: "GET /appdata HTTP/1.1", host: "orange.com"
从日志可见,URL确实被重写了,但是最终这个invalid URL prefix in "",我查找了源码,没有找到原因,希望帮忙解答,thanks

Guide contributeur