Traefik - 将中间件应用于除特定路径之外的路由器
Traefik - apply middleware to router except a specific path
我使用 IP 白名单中间件来过滤我的 Web 应用程序仅对某些 IPS 的访问并且它有效。
但是,我想取消对特定路径的保护,使其成为public(路径是/api/transaction
)。
目前,我有(在我的 docker-comose.yml
中):
varnish:
labels:
- "traefik.http.routers.api_varnish.rule=Host(`api.local`, `api`)"
- "traefik.http.routers.api_varnish.tls=true"
- "traefik.http.routers.api_varnish.middlewares=https-redirect@file"
- "traefik.http.routers.api_varnish.middlewares=https-whitelist@file"
- "traefik.http.services.api_varnish.loadbalancer.server.port=80"
这部分有效,然后我补充说:
# Open middleware for payment IPN calls
- "traefik.http.routers.api_varnish_transaction.rule=(Host(`api.local`, `api`) && PathPrefix(`/api/transaction`))"
- "traefik.http.routers.api_varnish_transaction.tls=true"
- "traefik.http.routers.api_varnish_transaction.priority=2"
- "traefik.http.routers.api_varnish_transaction.middlewares=https-redirect@file"
我复制了这些行,但我没有将中间件 https-whitelist@file
应用到新主机。
它不起作用,我找不到正确的语法或不确定我是否可以做到?文档很差。
有什么想法吗?
有 2 个路由器,一个用于 /api/transaction,另一个用于 /* 并给第一个路由器更高的优先级(设置更高的数字),例如
# ...
labels:
- traefik.http.routers.router_1.priority=2
现在对 /api/transaction 的请求只会命中 router_1
我使用 IP 白名单中间件来过滤我的 Web 应用程序仅对某些 IPS 的访问并且它有效。
但是,我想取消对特定路径的保护,使其成为public(路径是/api/transaction
)。
目前,我有(在我的 docker-comose.yml
中):
varnish:
labels:
- "traefik.http.routers.api_varnish.rule=Host(`api.local`, `api`)"
- "traefik.http.routers.api_varnish.tls=true"
- "traefik.http.routers.api_varnish.middlewares=https-redirect@file"
- "traefik.http.routers.api_varnish.middlewares=https-whitelist@file"
- "traefik.http.services.api_varnish.loadbalancer.server.port=80"
这部分有效,然后我补充说:
# Open middleware for payment IPN calls
- "traefik.http.routers.api_varnish_transaction.rule=(Host(`api.local`, `api`) && PathPrefix(`/api/transaction`))"
- "traefik.http.routers.api_varnish_transaction.tls=true"
- "traefik.http.routers.api_varnish_transaction.priority=2"
- "traefik.http.routers.api_varnish_transaction.middlewares=https-redirect@file"
我复制了这些行,但我没有将中间件 https-whitelist@file
应用到新主机。
它不起作用,我找不到正确的语法或不确定我是否可以做到?文档很差。
有什么想法吗?
有 2 个路由器,一个用于 /api/transaction,另一个用于 /* 并给第一个路由器更高的优先级(设置更高的数字),例如
# ...
labels:
- traefik.http.routers.router_1.priority=2
现在对 /api/transaction 的请求只会命中 router_1