traefik 通过错误的端口将 http 发送到 gitlab

traefik send http over wrong port to gitlab

我正在 traefik 代理后面设置一个 gitlab 服务器,但是我的 gitlab sshd 日志说 traefik 通过 22 端口向 gitlab 发送 http 请求,导致内部服务器错误。

 ==> /var/log/gitlab/sshd/current <==
gitlab    | 2019-08-27_03:39:15.42508 Bad protocol version identification 'GET / HTTP/1.1' from 192.168.144.2 port 33462

我发现有一个类似的讨论here,但是答案没有用,有什么办法可以将gitlab后端从22更改为80?

以下是我的代码和配置。

# traefik docker-compose.yaml
version: '3'
services: 
  traefik:
    container_name: traefik
    image: traefik
    command: --api
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
    networks:
      - web
    ports:
      - 8080:8080
      - 80:80
      - 443:443
networks:
  web:
    external: true
# traefik.toml
debug = false
logLevel = "INFO"
defaultEntryPoints = ["http","https"]

[entryPoints]
[entryPoints.http]
address = ":80"

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "mydomain.com"
watch = true
exposedByDefault = false
# gitlab docker-compose.yaml
version: '3'
services:
  # expose 22 80 443
  gitlab:
    container_name: gitlab
    image: gitlab/gitlab-ee
    volumes:
      - /nsrv/gitlab/config:/etc/gitlab
      - /nsrv/gitlab/logs:/var/log/gitlab
      - /nsrv/gitlab/data:/var/opt/gitlab
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:gitlab.mydomain.com
      - traefik.prot=80
    networks:
      - web
    restart: always   

networks:
  web:
    external: true

看起来你的 gitlab docker-compose.yaml 文件中有错字。

将 traefik.prot 替换为 traefik.port,它应该会更好。