2021-02-26 21:40:08 +08:00
|
|
|
|
---
|
|
|
|
|
title: Stand-alone mode
|
|
|
|
|
---
|
|
|
|
|
|
2019-10-31 09:27:28 +08:00
|
|
|
|
<!--
|
|
|
|
|
#
|
|
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
|
|
|
# this work for additional information regarding copyright ownership.
|
|
|
|
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
|
|
|
# (the "License"); you may not use this file except in compliance with
|
|
|
|
|
# the License. You may obtain a copy of the License at
|
|
|
|
|
#
|
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
#
|
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
|
# limitations under the License.
|
|
|
|
|
#
|
|
|
|
|
-->
|
|
|
|
|
|
2019-09-09 17:42:20 +08:00
|
|
|
|
开启 Stand-alone 模式的 APISIX 节点,将不再使用默认的 etcd 作为配置中心。
|
|
|
|
|
|
|
|
|
|
这种方式比较适合两类用户:
|
2020-04-16 19:21:46 +08:00
|
|
|
|
|
2019-09-09 17:42:20 +08:00
|
|
|
|
1. kubernetes(k8s):声明式 API 场景,通过全量 yaml 配置来动态更新修改路由规则。
|
2020-10-21 06:43:53 +08:00
|
|
|
|
2. 不同配置中心:配置中心的实现有很多,比如 Consul 等,使用全量 yaml 做中间转换桥梁。
|
2019-09-09 17:42:20 +08:00
|
|
|
|
|
2019-09-23 22:03:18 +08:00
|
|
|
|
APISIX 节点服务启动后会立刻加载 `conf/apisix.yaml` 文件中的路由规则到内存,并且每间隔一定时间
|
|
|
|
|
(默认 1 秒钟),都会尝试检测文件内容是否有更新,如果有更新则重新加载规则。
|
|
|
|
|
|
|
|
|
|
*注意*:重新加载规则并更新时,均是内存热更新,不会有工作进程的替换过程,是个热更新过程。
|
2019-09-09 17:42:20 +08:00
|
|
|
|
|
|
|
|
|
通过设置 `conf/config.yaml` 中的 `apisix.config_center` 选项为 `yaml` 表示启
|
|
|
|
|
用 Stand-alone 模式。
|
|
|
|
|
|
|
|
|
|
参考下面示例:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
apisix:
|
|
|
|
|
# ...
|
|
|
|
|
config_center: yaml # etcd: use etcd to store the config value
|
|
|
|
|
# yaml: fetch the config value from local yaml file `/your_path/conf/apisix.yaml`
|
|
|
|
|
# ...
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
此外由于目前 Admin API 都是基于 etcd 配置中心解决方案,当开启 Stand-alone 模式后,
|
2020-12-13 23:08:15 +08:00
|
|
|
|
Admin API 将不再被允许使用。
|
2019-09-23 22:03:18 +08:00
|
|
|
|
|
2021-01-13 14:49:33 +08:00
|
|
|
|
### 如何配置规则
|
2019-09-23 22:03:18 +08:00
|
|
|
|
|
|
|
|
|
所有的路由规则均存放在 `conf/apisix.yaml` 这一个文件中,APISIX 会以每秒(默认)频率检查文件是否有变化,如果有变化,则会检查文件末尾是否能找到 `#END` 结尾,找到后则重新加载文件更新到内存。
|
|
|
|
|
|
|
|
|
|
下面就是个最小的示例:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
upstream:
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
#END
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
*注意*:如果`conf/apisix.yaml`末尾不能找到 `#END`,那么 APISIX 将不会加载这个文件规则到内存。
|
|
|
|
|
|
2020-04-16 19:21:46 +08:00
|
|
|
|
### 配置 Router
|
2019-09-23 22:03:18 +08:00
|
|
|
|
|
|
|
|
|
单个 Router:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
upstream:
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
#END
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
多个 Router:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
upstream:
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
-
|
|
|
|
|
uri: /hello2
|
|
|
|
|
upstream:
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1981": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
#END
|
|
|
|
|
```
|
|
|
|
|
|
2020-04-16 19:21:46 +08:00
|
|
|
|
### 配置 Router + Service
|
2019-09-23 22:03:18 +08:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
service_id: 1
|
|
|
|
|
services:
|
|
|
|
|
-
|
|
|
|
|
id: 1
|
|
|
|
|
upstream:
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
#END
|
|
|
|
|
```
|
|
|
|
|
|
2020-04-16 19:21:46 +08:00
|
|
|
|
### 配置 Router + Upstream
|
2019-09-23 22:03:18 +08:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
upstream_id: 1
|
|
|
|
|
upstreams:
|
|
|
|
|
-
|
|
|
|
|
id: 1
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
#END
|
|
|
|
|
```
|
|
|
|
|
|
2021-01-13 14:49:33 +08:00
|
|
|
|
### 配置 Router + Service + Upstream
|
2019-09-23 22:03:18 +08:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
service_id: 1
|
|
|
|
|
services:
|
|
|
|
|
-
|
|
|
|
|
id: 1
|
|
|
|
|
upstream_id: 2
|
|
|
|
|
upstreams:
|
|
|
|
|
-
|
|
|
|
|
id: 2
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
#END
|
|
|
|
|
```
|
2020-11-03 13:46:24 +08:00
|
|
|
|
|
2021-01-13 14:49:33 +08:00
|
|
|
|
### 配置 Plugins
|
2020-11-03 13:46:24 +08:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
# 列出的插件会被热加载并覆盖掉启动时的配置
|
|
|
|
|
plugins:
|
|
|
|
|
- name: ip-restriction
|
|
|
|
|
- name: jwt-auth
|
|
|
|
|
- name: mqtt-proxy
|
|
|
|
|
stream: true # stream 插件需要设置 stream 属性为 true
|
2020-11-13 09:21:36 +08:00
|
|
|
|
#END
|
|
|
|
|
```
|
|
|
|
|
|
2021-01-13 14:49:33 +08:00
|
|
|
|
### 启用 SSL
|
2020-11-13 09:21:36 +08:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
ssl:
|
|
|
|
|
-
|
|
|
|
|
cert: |
|
|
|
|
|
-----BEGIN CERTIFICATE-----
|
|
|
|
|
MIIDrzCCApegAwIBAgIJAI3Meu/gJVTLMA0GCSqGSIb3DQEBCwUAMG4xCzAJBgNV
|
|
|
|
|
BAYTAkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwISGFuZ3pob3UxDTAL
|
|
|
|
|
BgNVBAoMBHRlc3QxDTALBgNVBAsMBHRlc3QxGzAZBgNVBAMMEmV0Y2QuY2x1c3Rl
|
|
|
|
|
ci5sb2NhbDAeFw0yMDEwMjgwMzMzMDJaFw0yMTEwMjgwMzMzMDJaMG4xCzAJBgNV
|
|
|
|
|
BAYTAkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwISGFuZ3pob3UxDTAL
|
|
|
|
|
BgNVBAoMBHRlc3QxDTALBgNVBAsMBHRlc3QxGzAZBgNVBAMMEmV0Y2QuY2x1c3Rl
|
|
|
|
|
ci5sb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ/qwxCR7g5S
|
|
|
|
|
s9+VleopkLi5pAszEkHYOBpwF/hDeRdxU0I0e1zZTdTlwwPy2vf8m3kwoq6fmNCt
|
|
|
|
|
tdUUXh5Wvgi/2OA8HBBzaQFQL1Av9qWwyES5cx6p0ZBwIrcXQIsl1XfNSUpQNTSS
|
|
|
|
|
D44TGduXUIdeshukPvMvLWLezynf2/WlgVh/haWtDG99r/Gj3uBdjl0m/xGvKvIv
|
|
|
|
|
NFy6EdgG9fkwcIalutjrUnGl9moGjwKYu4eXW2Zt5el0d1AHXUsqK4voe0p+U2Nz
|
|
|
|
|
quDmvxteXWdlsz8o5kQT6a4DUtWhpPIfNj9oZfPRs3LhBFQ74N70kVxMOCdec1lU
|
|
|
|
|
bnFzLIMGlz0CAwEAAaNQME4wHQYDVR0OBBYEFFHeljijrr+SPxlH5fjHRPcC7bv2
|
|
|
|
|
MB8GA1UdIwQYMBaAFFHeljijrr+SPxlH5fjHRPcC7bv2MAwGA1UdEwQFMAMBAf8w
|
|
|
|
|
DQYJKoZIhvcNAQELBQADggEBAG6NNTK7sl9nJxeewVuogCdMtkcdnx9onGtCOeiQ
|
|
|
|
|
qvh5Xwn9akZtoLMVEdceU0ihO4wILlcom3OqHs9WOd6VbgW5a19Thh2toxKidHz5
|
|
|
|
|
rAaBMyZsQbFb6+vFshZwoCtOLZI/eIZfUUMFqMXlEPrKru1nSddNdai2+zi5rEnM
|
|
|
|
|
HCot43+3XYuqkvWlOjoi9cP+C4epFYrxpykVbcrtbd7TK+wZNiK3xtDPnVzjdNWL
|
|
|
|
|
geAEl9xrrk0ss4nO/EreTQgS46gVU+tLC+b23m2dU7dcKZ7RDoiA9bdVc4a2IsaS
|
|
|
|
|
2MvLL4NZ2nUh8hAEHiLtGMAV3C6xNbEyM07hEpDW6vk6tqk=
|
|
|
|
|
-----END CERTIFICATE-----
|
|
|
|
|
key: |
|
|
|
|
|
-----BEGIN PRIVATE KEY-----
|
|
|
|
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCf6sMQke4OUrPf
|
|
|
|
|
lZXqKZC4uaQLMxJB2DgacBf4Q3kXcVNCNHtc2U3U5cMD8tr3/Jt5MKKun5jQrbXV
|
|
|
|
|
FF4eVr4Iv9jgPBwQc2kBUC9QL/alsMhEuXMeqdGQcCK3F0CLJdV3zUlKUDU0kg+O
|
|
|
|
|
Exnbl1CHXrIbpD7zLy1i3s8p39v1pYFYf4WlrQxvfa/xo97gXY5dJv8RryryLzRc
|
|
|
|
|
uhHYBvX5MHCGpbrY61JxpfZqBo8CmLuHl1tmbeXpdHdQB11LKiuL6HtKflNjc6rg
|
|
|
|
|
5r8bXl1nZbM/KOZEE+muA1LVoaTyHzY/aGXz0bNy4QRUO+De9JFcTDgnXnNZVG5x
|
|
|
|
|
cyyDBpc9AgMBAAECggEAatcEtehZPJaCeClPPF/Cwbe9YoIfe4BCk186lHI3z7K1
|
|
|
|
|
5nB7zt+bwVY0AUpagv3wvXoB5lrYVOsJpa9y5iAb3GqYMc/XDCKfD/KLea5hwfcn
|
|
|
|
|
BctEn0LjsPVKLDrLs2t2gBDWG2EU+udunwQh7XTdp2Nb6V3FdOGbGAg2LgrSwP1g
|
|
|
|
|
0r4z14F70oWGYyTQ5N8UGuyryVrzQH525OYl38Yt7R6zJ/44FVi/2TvdfHM5ss39
|
|
|
|
|
SXWi00Q30fzaBEf4AdHVwVCRKctwSbrIOyM53kiScFDmBGRblCWOxXbiFV+d3bjX
|
|
|
|
|
gf2zxs7QYZrFOzOO7kLtHGua4itEB02497v+1oKDwQKBgQDOBvCVGRe2WpItOLnj
|
|
|
|
|
SF8iz7Sm+jJGQz0D9FhWyGPvrN7IXGrsXavA1kKRz22dsU8xdKk0yciOB13Wb5y6
|
|
|
|
|
yLsr/fPBjAhPb4h543VHFjpAQcxpsH51DE0b2oYOWMmz+rXGB5Jy8EkP7Q4njIsc
|
|
|
|
|
2wLod1dps8OT8zFx1jX3Us6iUQKBgQDGtKkfsvWi3HkwjFTR+/Y0oMz7bSruE5Z8
|
|
|
|
|
g0VOHPkSr4XiYgLpQxjbNjq8fwsa/jTt1B57+By4xLpZYD0BTFuf5po+igSZhH8s
|
|
|
|
|
QS5XnUnbM7d6Xr/da7ZkhSmUbEaMeHONSIVpYNgtRo4bB9Mh0l1HWdoevw/w5Ryt
|
|
|
|
|
L/OQiPhfLQKBgQCh1iG1fPh7bbnVe/HI71iL58xoPbCwMLEFIjMiOFcINirqCG6V
|
|
|
|
|
LR91Ytj34JCihl1G4/TmWnsH1hGIGDRtJLCiZeHL70u32kzCMkI1jOhFAWqoutMa
|
|
|
|
|
7obDkmwraONIVW/kFp6bWtSJhhTQTD4adI9cPCKWDXdcCHSWj0Xk+U8HgQKBgBng
|
|
|
|
|
t1HYhaLzIZlP/U/nh3XtJyTrX7bnuCZ5FhKJNWrYjxAfgY+NXHRYCKg5x2F5j70V
|
|
|
|
|
be7pLhxmCnrPTMKZhik56AaTBOxVVBaYWoewhUjV4GRAaK5Wc8d9jB+3RizPFwVk
|
|
|
|
|
V3OU2DJ1SNZ+W2HBOsKrEfwFF/dgby6i2w6MuAP1AoGBAIxvxUygeT/6P0fHN22P
|
|
|
|
|
zAHFI4v2925wYdb7H//D8DIADyBwv18N6YH8uH7L+USZN7e4p2k8MGGyvTXeC6aX
|
|
|
|
|
IeVtU6fH57Ddn59VPbF20m8RCSkmBvSdcbyBmqlZSBE+fKwCliKl6u/GH0BNAWKz
|
|
|
|
|
r8yiEiskqRmy7P7MY9hDmEbG
|
|
|
|
|
-----END PRIVATE KEY-----
|
2020-12-30 22:57:00 +08:00
|
|
|
|
snis:
|
|
|
|
|
- "yourdomain.com"
|
2020-11-13 09:21:36 +08:00
|
|
|
|
#END
|
2020-11-03 13:46:24 +08:00
|
|
|
|
```
|
2021-01-13 14:49:33 +08:00
|
|
|
|
|
|
|
|
|
### 配置 global rule
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
global_rules:
|
|
|
|
|
-
|
|
|
|
|
id: 1
|
|
|
|
|
plugins:
|
|
|
|
|
response-rewrite:
|
|
|
|
|
body: "hello\n"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 配置 consumer
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
consumers:
|
|
|
|
|
- username: jwt
|
|
|
|
|
plugins:
|
|
|
|
|
jwt-auth:
|
|
|
|
|
key: user-key
|
|
|
|
|
secret: my-secret-key
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 配置 plugin metadata
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
upstreams:
|
|
|
|
|
- id: 1
|
|
|
|
|
nodes:
|
|
|
|
|
"127.0.0.1:1980": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
routes:
|
|
|
|
|
-
|
|
|
|
|
uri: /hello
|
|
|
|
|
upstream_id: 1
|
|
|
|
|
plugins:
|
|
|
|
|
http-logger:
|
|
|
|
|
batch_max_size: 1
|
|
|
|
|
uri: http://127.0.0.1:1980/log
|
|
|
|
|
plugin_metadata:
|
|
|
|
|
- id: http-logger # 注意 id 是插件名称
|
|
|
|
|
log_format:
|
|
|
|
|
host: "$host",
|
|
|
|
|
remote_addr: "$remote_addr"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 配置 stream route
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
stream_routes:
|
|
|
|
|
- server_addr: 127.0.0.1
|
|
|
|
|
server_port: 1985
|
|
|
|
|
id: 1
|
|
|
|
|
upstream_id: 1
|
|
|
|
|
plugins:
|
|
|
|
|
mqtt-proxy:
|
|
|
|
|
protocol_name: "MQTT"
|
|
|
|
|
protocol_level: 4
|
|
|
|
|
upstream:
|
|
|
|
|
ip: "127.0.0.1"
|
|
|
|
|
port: 1995
|
|
|
|
|
upstreams:
|
|
|
|
|
- nodes:
|
|
|
|
|
"127.0.0.1:1995": 1
|
|
|
|
|
type: roundrobin
|
|
|
|
|
id: 1
|
|
|
|
|
```
|