首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Traefik后面运行Graylog

在Traefik后面运行Graylog
EN

Stack Overflow用户
提问于 2019-06-12 19:58:48
回答 1查看 927关注 0票数 0

我一直在使用Traefik作为通过docker compose管理的几个容器的反向代理。它一直运行良好,但我有一些困难的灰色日志运行在它后面。

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

代码语言:javascript
复制
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/上的灰度日志

出现这个问题是因为我不能在我的登台环境中使用这样的域。我必须使用的是paths而不是domains,例如我的staging环境中的swagger服务被定义为

代码语言:javascript
复制
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/服务

尝试对灰度日志采用这种方法

代码语言:javascript
复制
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"

我得到了以下错误

我已经在灰色日志论坛上浏览了这个Q/Asimilar entries等等,但我感觉我是在追赶我的尾巴。

EN

回答 1

Stack Overflow用户

发布于 2019-10-06 03:15:21

这是针对Traefik 2.x的,但我认为您将设法转换您的规则:

代码语言:javascript
复制
      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"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56561737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档