1. ホーム
  2. websocket

[解決済み] TraefikでWebSocketをプロキシする方法とは?

2022-02-12 09:41:28

質問

Traefikの背後で動作するようにUpsourceをセットアップしようとしているのですが、どうすればいいですか? https://www.jetbrains.com/help/upsource/proxy-configuration.html

traefikはポート8008と8443をリッスンしています(80/443は別のものに使用されるため)。

--entryPoints='Name:http Address::8008 Redirect.EntryPoint:https' --entryPoints='Name:https Address::8443 TLS'

docker ラベルです。

labels:
  traefik.backend: upsource
  traefik.enable: "true"
  traefik.port: "8080"
  traefik.frontend.rule: "Host:review.domain.com"

conf/internal/bundle.properties , base-url は以下のように構成されています。

base-url=https\://review.domain.com\:8443/

の問題があります。

time="2017-09-20T03:23:59Z" level=error msg="Error getting ACME certificates [review.domain.com] : Cannot obtain certificates map[review.domain.com:acme: Error 400 - urn:acme:error:connection - Connection refused
Error Detail:
        Validation for review.domain.com:443

なぜ、ポート8443ではなく443で検証するのですか?

さらに、NginxでWebSocketをプロキシするためです。

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://upsourcemachine.domain.local:1111;
        proxy_pass_header Sec-Websocket-Extensions;

TraefikがWebSocketに対応していることを確認できますか?そして、もしそうなら、どのように設定するのですか?

解決方法は?

Traefikはwebsocketを扱うので、特に設定する必要はありません。

あなたの問題は、Let's Encryptのチャレンジのほうにあるようです。 Let's Encryptはデフォルト以外のポートでTLSチャレンジを扱わないし、TraefikのデフォルトのチャレンジはTLSです :(

そのため、DNSチャレンジを使用するようにTraefikを設定する必要があります。 https://docs.traefik.io/configuration/acme/