Настройка Nginx с помощью Traefik - PullRequest
0 голосов
/ 05 августа 2020

Я новичок в Linux в целом и даже новичок в Traefik, и некоторое время пытался настроить контейнер nginx для обслуживания некоторых AngularJS веб-страниц, используя Traefik в качестве обратного -прокси. У меня есть небольшой сервер Ubuntu 20.4, размещенный на DigitalOcean (если это имеет какое-то отношение).

Я пробовал следовать нескольким различным nginx учебным пособиям и самостоятельно вносить изменения в настройки, но безуспешно. Это сработает, если я запустил простую команду, например:

$ docker run –name some- nginx -d -p 8888: 80 nginx

Но тогда я могу получить к нему доступ только через myip: 8888, и я хотел бы получить доступ к нему через поддомен, то есть docs.domain.com.

Мне удалось настроить Traefik, используя traefik.yml, например:

api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

certificatesResolvers:
  http:
    acme:
      email: email@email.com
      storage: acme.json
      httpChallenge:
        entryPoint: http

А затем docker - составьте этот файл:

version: '3'

services:
  traefik:
    image: traefik:v2.0
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/traefik.yml:ro
      - ./acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`monitor.domain.com`)"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:secret_password"
      - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
      - "traefik.http.routers.traefik-secure.entrypoints=https"
      - "traefik.http.routers.traefik-secure.rule=Host(`monitor.domain.com`)"
      - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
      - "traefik.http.routers.traefik-secure.tls=true"
      - "traefik.http.routers.traefik-secure.tls.certresolver=http"
      - "traefik.http.routers.traefik-secure.service=api@internal"

networks:
  proxy:
    external: true

Я также успешно настроил портейнер:

version: '3'

services:
  portainer:
    image: portainer/portainer:latest
    container_name: portainer
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.portainer.entrypoints=http"
      - "traefik.http.routers.portainer.rule=Host(`manage.domain.com`)"
      - "traefik.http.middlewares.portainer-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.portainer.middlewares=portainer-https-redirect"
      - "traefik.http.routers.portainer-secure.entrypoints=https"
      - "traefik.http.routers.portainer-secure.rule=Host(`manage.domain.com`)"
      - "traefik.http.routers.portainer-secure.tls=true"
      - "traefik.http.routers.portainer-secure.tls.certresolver=http"
      - "traefik.http.routers.portainer-secure.service=portainer"
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"
      - "traefik.docker.network=proxy"

networks:
  proxy:
    external: true

Таким образом, я могу получить доступ к обоим поддомены portainer и traefik, с SSL, без проблем.

Я пробовал использовать docker -compose файлы для nginx, аналогичные поддоменам portainer, используя тома "./data:/usr/share/nginx / html: ro "и" ./nginx.conf:/etc/nginx/nginx.conf:ro ", а также некоторые другие параметры nginx .conf, как показано в Руководстве для начинающих из официальных документов. Я был бы признателен, если бы кто-нибудь мог указать, какие метки я должен использовать в файле docker -compose и как правильно взаимодействовать с Traefik с конфигурацией nginx.

...