Traefik多站点CORS配置冲突问题咨询
Traefik多站点CORS配置冲突问题咨询
嘿,兄弟,你的CORS冲突问题根源其实特别明显——你给两个服务重复定义了同名的CORS中间件!
Traefik里的中间件是全局资源,当你在多个服务的labels里重复声明traefik.http.middlewares.cors.*这类配置时,后面服务的配置会直接覆盖前面的。也就是说,你最后启动的那个服务的CORS规则会成为全局生效的规则,另一个服务的CORS设置等于被忽略了,自然就出现“冲突”的现象。
给你两种解决思路,看你需求选:
情况1:两个服务需要完全相同的CORS规则
只需要定义一次CORS中间件,然后让两个服务的路由器都引用它就行,别重复定义。比如把中间件配置放在Traefik自身的labels里(或者任意一个服务里,只放一次):
# 示例:在Traefik服务的labels中定义全局CORS中间件 services: traefik: image: traefik:v2.x labels: - "traefik.http.middlewares.cors.headers.accesscontrolallowmethods=GET,OPTIONS,PUT" - "traefik.http.middlewares.cors.headers.accesscontrolalloworiginlist=https://site1.com,https://site2.com" - "traefik.http.middlewares.cors.headers.accesscontrolmaxage=100" - "traefik.http.middlewares.cors.headers.addvaryheader=true" service-one: # 你的服务配置 labels: - "traefik.http.routers.service-one.middlewares=cors" service-two: # 你的服务配置 labels: - "traefik.http.routers.service-two.middlewares=cors"
情况2:两个服务需要不同的CORS规则
给每个服务的CORS中间件起独一无二的名字,比如cors-service-one和cors-service-two,各自配置对应的规则:
services: service-one: # 你的服务配置 labels: - "traefik.http.routers.service-one.middlewares=cors-service-one" - "traefik.http.middlewares.cors-service-one.headers.accesscontrolallowmethods=GET,OPTIONS,PUT" - "traefik.http.middlewares.cors-service-one.headers.accesscontrolalloworiginlist=https://site1.com" - "traefik.http.middlewares.cors-service-one.headers.accesscontrolmaxage=100" - "traefik.http.middlewares.cors-service-one.headers.addvaryheader=true" service-two: # 你的服务配置 labels: - "traefik.http.routers.service-two.middlewares=cors-service-two" - "traefik.http.middlewares.cors-service-two.headers.accesscontrolallowmethods=GET,OPTIONS,PUT" - "traefik.http.middlewares.cors-service-two.headers.accesscontrolalloworiginlist=https://site2.com" - "traefik.http.middlewares.cors-service-two.headers.accesscontrolmaxage=100" - "traefik.http.middlewares.cors-service-two.headers.addvaryheader=true"
另外提一句,你原来的配置里accesscontrolalloworiginlist重复写了两次https://site2.com,这个可以删掉重复项,不影响功能但更整洁~
备注:内容来源于stack exchange,提问作者Joe Gatt
相关产品推荐
相关产品推荐

