【问题标题】:Use nginx on route and traefik for subdomain在路由上使用 nginx,对子域使用 traefik
【发布时间】:2023-03-12 21:18:01
【问题描述】:

如果我想使用 traefik 代理对我的子域的请求并在我的根目录上使用 nginx,docker-compose 文件和 nginx 配置将如何显示。

所以,我想提供一些静态文件到:使用 nginx 的 domain.com 但我希望 traefik 处理以下流量:app.domain.com、app2.domain.com

这是我的作曲家文件中的内容......

version: '3'

networks:
  proxy:
    external: true
  internal:
    external: false
services:
  traefik:
    image: traefik:alpine
    ports:
      - "8080:8080"
      - "80:80"
      - "443:443"
    restart: always
    labels:
      - logLevel="DEBUG"
      - "traefik.backend=monitor"
      - "traefik.frontend.rule=Host:monitor.domain.com"
      - "traefik.port=8080"
      - "traefik.frontend.entryPoints=http,https"
      - "traefik.enable=true"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./traefik.toml:/traefik.toml"
      - "./acme.json:/acme.json"
    expose:
      - "8080"
    networks:
      - internal
      - proxy
  custom-badge:
    image: app
    environment:
      PORT: 3000
    ports:
      - "3000:3000"
    labels:
      - traefik.enabled=true
      - traefik.backend=custom-badge
      - traefik.frontend.rule=Host:app.domain.com
      - traefik.docker.network=proxy
      - traefik.port=3000
    networks:
      - internal
      - proxy
  server:
    image: nginx:alpine
    ports:
       - "80:80"
    labels:
      - traefik.enabled=true
      - traefik.backend=
      - traefik.frontend.rule=domain.com
      - traefik.docker.network=proxy
      - traefik.port=80
    volumes:
      - "./apps/root:/etc/nginx/html:ro"
      - "./nginx.conf:/etc/nginx/nginx.conf:ro"
    environment:
      - NGINX_HOST=domain.com
      - NGINX_PORT=80
    command: [nginx-debug, '-g', 'daemon off;']
    depends_on:
      - traefik

还有我的 nginx.conf

    http {
      server {
        listen          80;
        server_name     domain.com www.domain.com;
        location / {
            proxy_pass  domain.com:80/;
        }
      }
    }

我收到端口冲突错误,我做错了什么?

【问题讨论】:

    标签: docker nginx docker-compose dockerfile traefik


    【解决方案1】:

    你不能有两个服务 - traefik 和 nginx 使用相同的主机端口。

    你必须只有一个服务监听 80 端口。

    我建议将 traefik 配置为代理所有通信,并在缺少子域转发到 nginx 的情况下 - 我可以看到 - 你做到了。

    要修复您的错误,只需从服务器 (nginx) 服务定义中删除端口部分。

    【讨论】:

    • 谢谢,这消除了我的错误。我现在在 /etc/nginx/nginx.conf:6 的上游“web1”中找不到主机我的 nginx.conf 文件有什么问题
    • 更正,我也修复了。我现在在我的主域上得到 404,但其他子域加载正常。
    • 错误:配置中没有“事件”部分并以代码 1 退出
    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多