如何通过快速网关 HTTPS 为管理员 API 提供服务?
How to serve admin API over express gateways HTTPS?
我尝试设置我的快速网关,以便管理员 API 通过快速网关自己的 HTTPS 作为 apiEndpoint / serviceEndpoint 提供服务。
下面是我的网关-config.yml
我已尽我所能按照 documentation 中的说明进行操作。
https:
port: 8443
tls:
'default':
key: /usr/local/share/ca-certificates/ssl.key
cert: /usr/local/share/ca-certificates/ssl.crt
admin:
port: 8442
host: localhost
serviceEndpoints:
someExampleBackend:
url: https://some.example.com
adminBackend:
url: http://localhost:8442
policies:
- proxy
pipelines:
adminAPI:
apiEndpoints:
- admin
policies:
- proxy:
- action:
serviceEndpoint: adminBackend
domeExampleAPI:
apiEndpoints:
- general
- proxy:
- action:
serviceEndpoint: someExampleBackend
apiEndpoints:
admin:
host: localhost
general:
host: localhost
methods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
paths:
- "/echo"
我希望能够像那样使用管理员API:
https://localhost:8443/api-endpoints
同时示例通用端点:
https://localhost:8443/echo
当我这样做时,只有管理员 API 按预期工作。所有其他 apiEndpoints return 404 "Cannot GET /echo"。
当我使用管理员删除所有内容或仅更改主机时,其他 apiEndpoints 可以正常工作。
我该如何解决这个任务?
经过多次尝试和错误后解决。
对于所有其他为此苦苦挣扎的人:您可以使用重写策略。
https:
port: 8443
tls:
'default':
key: /usr/local/share/ca-certificates/ssl.key
cert: /usr/local/share/ca-certificates/ssl.crt
admin:
port: 8442
host: localhost
serviceEndpoints:
someExampleBackend:
url: https://some.example.com
adminBackend:
url: http://localhost:8442
policies:
- proxy
pipelines:
adminAPI:
apiEndpoints:
- admin
policies:
- rewrite:
- condition:
name: pathmatch
match: /adminapi/:route*
action:
rewrite: /:route
- proxy:
- action:
serviceEndpoint: adminBackend
domeExampleAPI:
apiEndpoints:
- general
- proxy:
- action:
serviceEndpoint: someExampleBackend
apiEndpoints:
admin:
host: localhost
paths: "/adminapi/*"
general:
host: localhost
methods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
paths:
- "/echo"
我尝试设置我的快速网关,以便管理员 API 通过快速网关自己的 HTTPS 作为 apiEndpoint / serviceEndpoint 提供服务。
下面是我的网关-config.yml
我已尽我所能按照 documentation 中的说明进行操作。
https:
port: 8443
tls:
'default':
key: /usr/local/share/ca-certificates/ssl.key
cert: /usr/local/share/ca-certificates/ssl.crt
admin:
port: 8442
host: localhost
serviceEndpoints:
someExampleBackend:
url: https://some.example.com
adminBackend:
url: http://localhost:8442
policies:
- proxy
pipelines:
adminAPI:
apiEndpoints:
- admin
policies:
- proxy:
- action:
serviceEndpoint: adminBackend
domeExampleAPI:
apiEndpoints:
- general
- proxy:
- action:
serviceEndpoint: someExampleBackend
apiEndpoints:
admin:
host: localhost
general:
host: localhost
methods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
paths:
- "/echo"
我希望能够像那样使用管理员API:
https://localhost:8443/api-endpoints
同时示例通用端点:
https://localhost:8443/echo
当我这样做时,只有管理员 API 按预期工作。所有其他 apiEndpoints return 404 "Cannot GET /echo"。 当我使用管理员删除所有内容或仅更改主机时,其他 apiEndpoints 可以正常工作。
我该如何解决这个任务?
经过多次尝试和错误后解决。
对于所有其他为此苦苦挣扎的人:您可以使用重写策略。
https:
port: 8443
tls:
'default':
key: /usr/local/share/ca-certificates/ssl.key
cert: /usr/local/share/ca-certificates/ssl.crt
admin:
port: 8442
host: localhost
serviceEndpoints:
someExampleBackend:
url: https://some.example.com
adminBackend:
url: http://localhost:8442
policies:
- proxy
pipelines:
adminAPI:
apiEndpoints:
- admin
policies:
- rewrite:
- condition:
name: pathmatch
match: /adminapi/:route*
action:
rewrite: /:route
- proxy:
- action:
serviceEndpoint: adminBackend
domeExampleAPI:
apiEndpoints:
- general
- proxy:
- action:
serviceEndpoint: someExampleBackend
apiEndpoints:
admin:
host: localhost
paths: "/adminapi/*"
general:
host: localhost
methods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
paths:
- "/echo"