Commit Graph

180 Commits

Author SHA1 Message Date
罗泽轩
fcd880f23f
chore: enhance upstream discovery (#3269)
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2021-01-14 09:47:24 +08:00
罗泽轩
4de254ad27
fix(roundrobin): don't retry a node again (#3217)
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2021-01-11 22:25:53 +08:00
阿姆斯壮
500e42d4ec
fix: make set_more_retries() work when upstream_type is chash (#2676) 2021-01-07 19:19:52 +08:00
罗泽轩
81c1c7c077
change: don't treat route segment with ':' as parameter by default (#3154)
Fix #3134
2020-12-30 22:13:05 +08:00
罗泽轩
560a2fe3ab
change: remove k8s_deployment_info (#3098)
Fix #3068
2020-12-22 22:28:47 +08:00
罗泽轩
fd2db606a9
feat: rewrite handwriting validation with jsonschema (#3021)
Fix #2967. Some plugins can't be rewritten, so I have to keep them.

Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2020-12-18 16:55:23 +08:00
罗泽轩
d16ac7a021
feat: share etcd client (#2932)
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2020-12-15 20:18:25 +08:00
罗泽轩
8420a0f39d
feat: return 502 for upstream not found in the DP (#3050)
Fix #3035

Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2020-12-15 18:04:10 +08:00
John Bampton
511f52a856
refactor: remove trailing whitespace (#3040) 2020-12-15 08:56:20 +08:00
John Bampton
dcdbc1cc9e
chore: spelling (#3027) 2020-12-13 19:31:24 +08:00
罗泽轩
cc9c1bb090
ci: check misspell (#3011)
Fix #3009
2020-12-10 23:05:36 +08:00
罗泽轩
270aef027a
test: make node/merge-route.t stable (#2999)
The time_window field might be the last one, which doesn't have ','

Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2020-12-09 17:08:26 +08:00
tzssangglass
c7b198f969
feat: support enable/disable route (#2943)
fix #2737
2020-12-09 10:38:21 +08:00
罗泽轩
08d25ebc51
test: make node/merge-route.t stable (#2978) 2020-12-07 20:21:12 +08:00
罗泽轩
a019b4e4d0
test: improve chash-balance cases (#2920)
Fix #2914
2020-12-02 15:12:00 +08:00
罗泽轩
a63b6b8c6e
feat: allow create consumers with multiple auth plugins (#2898)
Fix #2850
2020-12-01 15:42:59 +08:00
罗泽轩
44855ec1a7
ci: make it work under OpenResty 1.19 (#2768) 2020-11-30 10:32:35 +08:00
Yuelin Zheng
d7e59113d5
feat: How to distinguish whether the 5xx status code (eg 500) comes from upstream or apisix (#2817)
close #2501
2020-11-27 18:33:02 +08:00
Yousa
53e2d5387f
fix: remove upstream 'Server' header info. fix #2714 (#2731)
fix #2714
2020-11-18 13:15:31 +08:00
Firstsawyou
2ba28ff6a7
chore: sort the request headers output by the _M.uri and _M.old_uri function in t/lib/server.lua (#2696)
fix #2636
2020-11-12 14:37:51 +08:00
dabue
70453aece3
chore(core): enabled websocket in route and service (#2593) 2020-11-10 16:56:38 +08:00
罗泽轩
960077f245
fix(echo): modify response body correctly (#2561)
Fix #2427, #2554
2020-10-29 16:48:53 +08:00
Firstsawyou
d1729c0af3
feat: In dns parse, when the parameter resolvers is empty, the local dns is used as resolvers by default (#2424)
fix #2422
2020-10-17 13:44:53 +08:00
dabue
40577ee1e2
chore: remove the folder 'logs' in root and replace baidu.com with github.com in test cases (#2374)
* rm log

* replace baidu.com to github.com in testcases

* keep folder logs

* remove the folder logs

* update Makefile
2020-10-12 23:49:43 +08:00
L
720d135fd2
fix: Update error message when Route doesn't exist (#2304)
Fixes #2302

Co-authored-by: YuanSheng Wang <membphis@gmail.com>
2020-10-06 11:48:52 +08:00
YuanSheng Wang
50c99a5e3b
bugfix: create etcd object in xpcall, this step may fail (#2312)
* bugfix: create the etcd object in `xpcall`, it may fail, the return values of `etcd.new` should be `res, err`.

fix issue: #2310

1. The old process, if creating etcd fails, etcd data will no longer be synchronized. We need to create the etcd object in xpcall.
2. the return value should be res, err of etcd.new.

* test: old test case is unstable, should delete some checkpoint which is wrong.
2020-10-05 10:22:28 +08:00
YuanSheng Wang
05840ca9e2
test: wait for more time and check the error log, old way is unstable. (#2341) 2020-09-30 17:05:46 +08:00
Wen Ming
13b0968340
Revert "feat(http-logger): support for specified the log formats via admin API (#2294)" (#2307)
This reverts commit 89f89f3004.
2020-09-24 23:50:22 +08:00
YuanSheng Wang
89f89f3004
feat(http-logger): support for specified the log formats via admin API (#2294) 2020-09-24 20:45:50 +08:00
Firstsawyou
a651a29e20
feature: allow empty service object, it does not contain any upstream and plugin (#2259) 2020-09-21 16:52:18 +08:00
YuanSheng Wang
03d818e175
test: before creating and deleting routes in batches, clear all routes first (#2253)
* test: set larger timeout.
2020-09-18 18:43:02 +08:00
YuanSheng Wang
4f900390f9
bugfix: independently check the "disabled" field to avoid schema ve… (#2099)
* bugfix: independently check the "disabled" field to avoid `schema` verification
  with other parameters.
2020-09-17 22:31:02 +08:00
YuanSheng Wang
68b1f9cc57
bugfix: clear all cached object when got delete action, and removing (#2168)
stale boolean data in table `self.values` with a safer way.
2020-09-17 09:30:44 +08:00
YuanSheng Wang
12a0b13145
bugfix: use the route's has_domain if it contains any upstream object. (#2211) 2020-09-15 12:12:09 +08:00
nic-chen
502310bef6
feat: support different modes to pass host to upstream (#2132)
* test: using `httpbin.org` for test cases.
* doc: add doc
* remove golang apt repository and runtime in travis.
* download proto file
Co-authored-by: Yuansheng <membphis@gmail.com>
2020-08-30 22:43:28 +08:00
redynasc
98bb5933d6
feature: implement ewma balancer for upstream node (#2001)
ewma is a different balancing implementation that will generate a weight for every backend IP based on the last server response time, basically it tries to dispatch more requests to the backends that reply faster, supposing that they are less loaded.

fix #1996
2020-08-29 23:14:16 +08:00
YuanSheng Wang
cf882bda1e
feature: divide config.yaml into two files config-custom.yaml & confi… (#2023)
* feature: divide config.yaml into two files config-custom.yaml & config-default.yaml .

fix #1923
2020-08-18 20:18:55 +08:00
YuanSheng Wang
c2a7359b27
update radixtree to version 2.2 . (#2061)
fix #2058

* fixed test
2020-08-16 16:32:29 +08:00
Swayam Raina
6e0da454d1
feature: add apisix-version info to headers in APISIX core (#1961)
related #1877
2020-08-15 07:24:33 +08:00
YuanSheng Wang
6c8a6c3c54
bugfix: when the plug-in configuration that is bound to the consumer is (#2028)
fix #2019
2020-08-12 09:11:40 +08:00
YuanSheng Wang
05f30e1e15
bugfix: support parameter way to match request in route. (#2012)
fix #2008
2020-08-07 08:13:58 +08:00
YuanSheng Wang
3d8150b208
test: old test case is unstable, running fail sometimes. (#1925) 2020-07-31 21:24:31 +08:00
YuanSheng Wang
2ba0231140
bugfix: passive health check seems never provide a healthy report (#1918)
Fix #1640
2020-07-31 19:31:20 +08:00
YuanSheng Wang
fbc3c6818d
feature: allow to set retries=0 for upstream object. (#1919) 2020-07-29 19:21:50 +08:00
Janko
520ef311e3
feature: health check supports custom host port. (#1914) 2020-07-28 23:51:42 +08:00
Janko
a108d2eee1
bugfix: failed to get host in health check configuration. (#1871)
The `host` of health check should be sub-item of `check.active` .

FIX #1869
2020-07-27 13:47:14 +08:00
YuanSheng Wang
47b0ef372e
bugfix: fetch wrong the upstream node when there were multiple upstream node with host (#1835)
Fix #1834
2020-07-17 21:51:51 +08:00
nic-chen
e598e6fa6a
bugfix: wrong counter was used, resulting in only one certificate working fine. (#1818)
Fix #1817
2020-07-10 18:39:08 +08:00
Raisinata
0e517a25d6
feature: using GitHub action for CI (#1793) 2020-07-09 12:15:17 +08:00
YuanSheng Wang
748e33756b
refactory: collect upstream logic and put them in a single file. (#1734)
feature: support dynamic upstream in plugin.

here is a mini  example in `access` phase of plugin:

```lua
    local up_conf = {
        type = "roundrobin",
        nodes = {
            {host = conf.upstream.ip, port = conf.upstream.port, weight = 1},
        }
    }

    local ok, err = upstream.check_schema(up_conf)
    if not ok then
        return 500, err
    end

    local matched_route = ctx.matched_route
    upstream.set(ctx, up_conf.type .. "#route_" .. matched_route.value.id,
                 ctx.conf_version, up_conf, matched_route)
    return
```
2020-06-22 14:21:42 +08:00
YuanSheng Wang
e38d0a9dc8
change: update resty-radixtree to version 1.9 . (#1730) 2020-06-19 12:24:52 +08:00
YuanSheng Wang
2025337077
test: add test case for route with filter_func. (#1683) 2020-06-11 11:03:02 +08:00
YuanSheng Wang
c9a53abbb9
test: updated style. (#1606) 2020-05-22 21:34:58 +08:00
qiujiayu
e7d19ec160
feature: support discovery center (#1440) 2020-05-14 23:20:44 +08:00
YuanSheng Wang
89a07efb51
test: reindex by tools reindex. (#1519) 2020-04-28 18:54:14 +08:00
罗泽轩
972840ec96
fix: skip tombstone mark when iterating the global values (#1517)
Close #1473.
2020-04-28 17:25:55 +08:00
YuanSheng Wang
0f3310562c
bugfix: init clean_handlers when add new item from etcd. (#1412)
fix #1384
2020-04-28 16:01:04 +08:00
nic-chen
a53b4707fb
feat: support saving k8s deployment info to upstream (#1502)
* feat: support save k8s deployment info to upstream
2020-04-27 10:47:17 +08:00
罗泽轩
ca91387a60
test: fix regex usage in some cases (#1504) 2020-04-26 10:43:08 +08:00
YuanSheng Wang
669772f5d5
bugfix: check if the service's upstream node is host. (#1402) 2020-04-12 09:31:58 +08:00
YuanSheng Wang
076ecf3ade
bugfix: should not drop the error msg of dns_parse. (#1398)
fix #573 .
2020-04-06 11:04:09 +08:00
YuanSheng Wang
51684de77b
bugfix: fail to get the http request header by ngx.var. * (#1348)
* bugfix: to get the HTTP request header by `ngx.var.*`, we need to convert
  the name to lower case with dashes replaced by underscores.

more information:

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_

* change: the key should be a string object when fetching a value from `ctx.var`.

* bug(make lint): If the code style is bad, do exit with code 1.
2020-03-27 23:13:46 +08:00
qiujiayu
7baa0abd44
feature: if the dns_resolver is not set in the file conf/config.yaml, use the resolver in local DNS. (#1217)
Fix #1164
2020-03-26 09:48:18 +08:00
YuanSheng Wang
8d745c7441
test: wait a longer time. (#1323) 2020-03-23 00:03:51 +08:00
YuanSheng Wang
60b88536fe
bugfix: check the count of upstream valid node. (#1292) 2020-03-19 12:07:43 +08:00
Lien
e6804360d1 feature: supported to enable Websocket in upstream object (#1051) 2020-01-14 14:37:24 +08:00
YuanSheng Wang
ea7e783fca test: style, reformatted by reindex tools. (#1045) 2020-01-14 09:51:05 +08:00
Changwei Hu
9c9be959d3 feature: chash key support more flexible ways (#1022)
upstream add hash_on, chash key support more flexible ways
 routes and services admin api add upstream_conf check
2020-01-10 15:17:17 +08:00
YuanSheng Wang
9e98773fae
change: responsed a better tip when failed to match any route. (#1013) 2020-01-03 10:11:37 +08:00
YuanSheng Wang
536f547df8 test: removed temporary data. (#829) 2019-11-27 10:05:06 +08:00
YuanSheng Wang
70d3f0b608 bug: fixed bug when no valid upstream node. (#893) 2019-11-25 16:46:20 +08:00
罗泽轩
5e85e93eac change: don't strip square brackets from the IPv6 (#822)
* change: don't strip square brackets from the IPv6

The OpenResty APIs require the IPv6 literal wrapped inside a square brackets.
Also add tests for IPv6 upstream and update lua-resty-ipmatcher to 0.3.

Fix #816.
2019-11-11 09:49:22 +08:00
罗泽轩
b67f99b265 chore: fixed typo detected by misspell (#801) 2019-11-05 10:58:04 +08:00
Lien
b91d2d36c0 Fix: allow set multiple URI in one route config (#797)
* route support uris

* fix uris in router with test cases

* remove line has trailing whitespace

* remove line has trailing whitespace

* fix test case

* use new test case for  multiple uris
2019-11-04 14:00:52 +08:00
Lien
b119a5c94b bugfix: support more built-in parameters when set chash balancer (#775) 2019-11-03 18:25:51 +08:00
YuanSheng Wang
4ee11806de
travis: supported to run APISIX with Tengine. (#683) 2019-11-02 09:05:38 +08:00
YuanSheng Wang
ad376f83f8
change: updated resty-radixtree to v1.5. (#768)
* feature: supported userdefine lua function in router `radixtree_uri`.
* feature: supported userdefine lua function in router `radixtree_host_uri`.
2019-11-01 09:49:09 +08:00
WenMing
12a2b01b71
license: add ASF header. (#743) 2019-10-31 09:27:28 +08:00
YuanSheng Wang
d8b0c2d04c change: removed router r3. (#725) 2019-10-23 12:59:22 +08:00
YuanSheng Wang
d06fbfa13c change: used lua-resty-jsonschema instead of lua-rapidjson. (#703) 2019-10-23 12:58:10 +08:00
YuanSheng Wang
6b875cec33
feature(limit-count): supported global limit count with redis server. (#624) 2019-10-08 13:15:48 +08:00
Janko
d91be43a4f change: remove options hosturischemaenable_websocket of upstream object (#621)
we can rewrite new proxy option by plugin `proxy-rewrite`.
2019-09-27 19:29:59 +08:00
YuanSheng Wang
3f700c5dc1
doc(admin api): route. (#593)
feature: supported new fields hosts, remote_addrs and vars for router.

fix: #592
2019-09-26 17:47:08 +08:00
YuanSheng Wang
4bb9e6ecb9
test: added new test case about https://github.com/iresty/apisix/pull/586. (#587)
* test: added test cases.
2019-09-24 18:26:43 +08:00
YuanSheng Wang
de3c95da21
feature: support consumer bind plugins. (#544)
* feature: saved consumer plugin information.
* feature: supported to merge plugin with consumer and route.
2019-09-22 06:05:58 +08:00
YuanSheng Wang
894fa584e0
feature: supported to use host name in upstream (#522)
* feature: supported to config resolver in yaml config file.

* feature: supported domain host for upstream node
2019-09-18 17:41:44 +08:00
YuanSheng Wang
681a42cbed
feature: support upstream nodes with a weight of 0. (#536)
* test: added test cases.

* doc: updated doc.

current implementation is enough, it supports weight equal 0 now.
2019-09-18 12:00:53 +08:00
Yuansheng
14d5a38fc3 test: renamed base component. 2019-09-10 16:15:59 +08:00
YuanSheng Wang
912685c818
feature: supported to save/delete/change global rule. (#492)
* feature: supported to load and run global rule.
2019-09-10 15:27:40 +08:00
Yuansheng
4bb40df857 change(test): name style. 2019-09-10 10:07:29 +08:00
YuanSheng Wang
d8d7f018dc
feature: support to load routes from local yaml file. (#464)
* feature: support to load routes from local yaml file.
2019-09-09 17:42:20 +08:00
YuanSheng Wang
af3454c6ee
change: updated component lua-resty-radixtree to v0.7 and updated test (#470)
* change: updated component `lua-resty-radixtree` to v0.7 and updated test
  cases.
2019-09-05 17:23:06 +08:00
Yuansheng
9ff1d3fd44 feature: supported to filter route by Nginx variable for router radixtree_uri. 2019-09-02 15:31:21 +08:00
YuanSheng Wang
ad98a2bfdb
feature: supported to set more upstream options. (#451)
* feature: supported to set more upstream options.
* feature: supported to enable websocket for upstream.
2019-08-30 10:15:58 +08:00
YuanSheng Wang
1002765831
feature: support to match IPv6 request. (#341)
* CLI: supported to listen IPv6.

* feature: supported to match route by remote address.
2019-08-24 09:10:11 +08:00
YuanSheng Wang
275cfa8c73
change(router): use radixtree_sni as default SSL router. (#419)
* change(router): use `radixtree_sni` as default SSL router.

* change(route): use `radixtree_uri` as default HTTP(S) router.

* luarocks: removed `lua-resty-libr3` component by default.
2019-08-20 22:07:59 +08:00
YuanSheng Wang
560a3115a1
bugfix: avoided to cover the original service configuration. (#416)
* bugfix: avoided to cover the original service configuration.
2019-08-19 15:26:38 +08:00
YuanSheng Wang
59da5e78e5
bugfix: stop the checker if the config source is changed. (#406)
* bugfix: stop the checker if the config source is changed.

* test: added new test cases.
2019-08-19 14:02:33 +08:00
YuanSheng Wang
1ef5828090
feature: supported to use router lua-resty-radixtree. (#391)
* feature: supported new router `lua-resty-radixtree`.

* change(nginx.conf): sync from CLI.
2019-08-12 09:04:41 +08:00
Yuansheng
1ce988346a optimize(router): used local cache variable to avoid one lrucache call. 2019-08-04 23:20:55 +08:00