help wanted
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