gpt4 book ai didi

websocket - Traefik 配置允许 websocket

转载 作者:行者123 更新时间:2023-12-02 22:24:48 32 4
gpt4 key购买 nike

我有一个由以下服务组成的应用程序:

  • tls 终止(基于 https-portal)
  • 反向代理(nginx)
  • 其他服务(网络、API、WSS...)

所有流量都是这样的:

https-portal -> nginx -> 其他服务

我正在用 Traefik 替换 https-portal,但我无法让 websocket 正确通过。

下面是我的 docker-compose.yml 文件的摘录。到达 Traefik 的流量被转发到反向代理的专用端口。这个将执行一些检查,然后将请求转发到适当的服务(api、web 前端、websocket 服务器......)

  # Proxy
proxy:
image: mynginxproxy
build: ../../../development/proxy
restart: always
labels:
- traefik.web.frontend.rule=Host:app.dev
- traefik.web.port=8000
- traefik.wss.frontend.rule=Host:wss.app.dev
- traefik.wss.protocol=ws
- traefik.wss.port=9002
- traefik.api.frontend.rule=Host:api.app.dev
- traefik.api.port=8002
- ... // other labels

# Traefik
traefik:
image: traefik
command: --web --docker --docker.domain=app.dev --logLevel=DEBUG
labels:
- "traefik.enable=false"
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/null:/traefik.toml

当 Web 前端提供服务时,在 app.dev 域上,会在 ws://wss.app.dev 上尝试 Websocket 连接,但无法连接到底层 Websocket 服务器。该错误似乎与 Origin header 相关,该 header 设置为 app.dev,其中目标服务器是 wss.app.dev。

记录表单traefik:

traefik_1        | time="2017-08-02T13:55:05Z" level=warning msg="Error while upgrading connection : websocket: 'Origin' header value not allowed"

我不确定我在这里缺少什么,因为它通过 https-portal 正确传递。 Traefik 中还需要其他选项吗?

最佳答案

WebSocket 无需额外配置。

traefik.wss.protocol=httptraefik.wss.protocol=https

1.3.2 之后和 1.3.8 之前的 WebSocket 存在一个错误。

我建议您使用1.4.0或至少1.3.8

关于websocket - Traefik 配置允许 websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45464191/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com