首页 > 解决方案 > nginx/docker 路由配置

问题描述

我有一个数字海滴。在它的根目录中是以下文件

apps/
 -main/
   -index.html
nginx.conf
docker-compose.yml

我的 docker-compose.yml 文件具有以下内容

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: user/app
    environment:
      PORT: 3000
    ports:
      - "3000:3000"
    labels:
      - traefik.enabled=true
      - traefik.backend=app
      - traefik.frontend.rule=Host:app.domain.com
      - traefik.docker.network=proxy
      - traefik.port=3000
    networks:
      - internal
      - proxy
  server:
    image: nginx:alpine
    labels:
      - traefik.enabled=true
      - traefik.backend=
      - traefik.frontend.rule=Host:domain.com
      - traefik.docker.network=proxy
      - traefik.port=80
    volumes:
      - "./apps:/etc/nginx/html:ro"
      - "./nginx.conf:/etc/nginx/nginx.conf:ro"
    command: [nginx-debug, '-g', 'daemon off;']
    depends_on:
      - traefik

和我的 nginx.conf

events {
  worker_connections  1024;  ## Default: 1024
}

http {
server {
    listen          80;
    server_name     domain.com www.domain.com;
    location / {
        root  /etc/nginx/html/main;
        proxy_pass  domain.com:8080/;
    }
}
}

问题是,当我运行 docker-compose up 时,一切都启动了,我可以看到所有 3 个容器都启动了,但是当我转到 domain.com 时,我没有看到我的 index.html 文件。我做错了什么?

其他域工作正常:app.domain.com 和 monitor.domain.com 这让我认为 nginx 配置和需要提供哪些文件一定有问题。

标签: dockernginxdocker-compose

解决方案


你有一个循环 - 删除proxy_pass。Nginx 应该从根文件夹提供数据,而不是将请求代理到另一个服务。


推荐阅读