【问题标题】:Running Graylog behind Traefik在 Traefik 后面运行 Graylog
【发布时间】:2019-06-12 11:58:48
【问题描述】:

我一直使用Traefik 作为通过 docker compose 管理的多个容器的反向代理。它一直运行良好,但让 graylog 在其后面正常运行时遇到了一些困难。

这个配置(完整文件的摘录,删除了不相关的服务)对我有用

version: '3'

services:
  traefik:
    image: traefik 
    command: --docker 
    networks:
      - web
    ports:
      - "80:80"     
      - "8080:8080" 
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  graylog:
    image: graylog/graylog:3.0
    environment:
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      - GRAYLOG_ROOT_PASSWORD_SHA2=somestuffhere
      - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000
      - GRAYLOG_HTTP_EXTERNAL_URI=http://graylog.localhost/
    links:
      - mongodb:mongo
      - elasticsearch
    depends_on:
      - mongodb
      - elasticsearch
    networks:
      - web
      - default
    ports:
      - 9000:9000
      - 1514:1514
      - 1514:1514/udp
      - 12201:12201
      - 12201:12201/udp
    labels:
      - "traefik.docker.network=web"
      - "traefik.web.frontend.rule=Host:graylog.localhost"
      - "traefik.protocol=http"
      - "traefik.port=9000"
      - "traefik.enable=true"

然后我可以在我的浏览器中通过http://graylog.localhost/访问graylog

出现问题是因为我无法在我的暂存环境中使用这样的域。我不得不使用的是paths 而不是domains 例如我的暂存环境中的 swagger 服务定义为

swagger:
    image: swaggerapi/swagger-ui
    environment:
      SWAGGER_JSON: /swagger/staging-openapi.yaml
      BASE_URL: /swagger
    volumes:
      - /home/ubuntu/src/carelink_swagger_service:/swagger
    networks:
      - web
      - default
    labels:
      - "traefik.docker.network=web"
      - "traefik.frontend.rule=Host:my.staging.domain.org; PathPrefix: /swagger"
      - "traefik.protocol=http"
      - "traefik.port=8080"
      - "traefik.enable=true"

我可以访问这样的服务https://my.staging.domain.org/swagger/

尝试对graylog采用这种方法

graylog:
    image: graylog/graylog:3.0
    environment:
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      - GRAYLOG_ROOT_PASSWORD_SHA2=somestuffhere
      - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000
      - GRAYLOG_HTTP_EXTERNAL_URI=http://localhost/graylog/
    links:
      - mongodb:mongo
      - elasticsearch
    depends_on:
      - mongodb
      - elasticsearch
    networks:
      - web
      - default
    ports:
      - 9000:9000
      - 1514:1514
      - 1514:1514/udp
      - 12201:12201
      - 12201:12201/udp
    labels:
      - "traefik.docker.network=web"
      - "traefik.web.frontend.rule=Host:localhost; PathPrefix: /graylog"
      - "traefik.protocol=http"
      - "traefik.port=9000"
      - "traefik.enable=true"

我收到以下错误

我在 graylog 论坛等上浏览过 Q/Asimilar entries 等,但我觉得我在追我的尾巴。

【问题讨论】:

    标签: reverse-proxy traefik graylog2 graylog


    【解决方案1】:

    它适用于 Traefik 2.x,但我认为你会设法转换你的规则:

          labels:
            - "traefik.http.routers.graylog.rule=PathPrefix(`/graylog`)"
            - "traefik.http.routers.graylog.middlewares=graylog3@docker,graylog2@docker,graylog@docker"
            - "traefik.http.middlewares.graylog3.stripprefix.prefixes=/graylog"
            - "traefik.http.middlewares.graylog2.redirectregex.regex=^(.*)/graylog$$"
            - "traefik.http.middlewares.graylog2.redirectregex.replacement=$$1/graylog/"
            - "traefik.http.middlewares.graylog.replacepathregex.regex=^/graylog/(.*)"
            - "traefik.http.middlewares.graylog.replacepathregex.replacement=^/$$1"
            - "traefik.http.routers.graylog.service=graylog"
            - "traefik.http.services.graylog.loadbalancer.server.port=9000"
            - "traefik.docker.network=traefik"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      相关资源
      最近更新 更多