Traefik / Nextcloud не получает удаленный IP-адрес - PullRequest
0 голосов
/ 07 мая 2019

Я просматривал файлы журналов / базу данных и заметил, что когда я пытался вручную отключить защиту следующего брутфорса, он записывал IP-адрес и подсеть сети Docker, а не IP-адрес, с которого я получал доступ к странице входа в систему. (В частности, 192.168.192.1 и 192.168.192.1/32)

Я не знаю, есть ли у меня что-то в файлах traefik или Nextcloud, сконфигурированных неправильно, или если что-то не так с сетью докеров, но, разумеется, я бы хотел, чтобы он обнаружил фактический IP-адрес пользователя, пытающегося войти, не внутренняя информация IP-адреса докера. Я решил начать здесь и посмотреть, смогу ли я получить какие-либо отзывы, прежде чем искать в другом месте.

traefik docker-compose.yml: https://pastebin.com/rjFA5ZBi

version: '3.3'
services:
  traefik:
    image: traefik:latest
    container_name: traefik
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/traefik/traefik.toml:/traefik.toml
      - ${USERDIR}/traefik/acme.json:/acme.json
      - /var/log/traefik:/var/log
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    expose:
      - 8080
    command:
      - --accessLog.filePath=/var/log/access.log
      - --accessLog.filters.retryAttempts=true
      - --accessLog.filters.minDuration=10ms
      - --accessLog.filters.statusCodes=400-499
    restart: always


networks:
  proxy:
    external: true

Nextcloud docker-compose.yml: https://pastebin.com/CjTYBZm6

 db:
    image: mariadb
    container_name: nextcloud-mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=${TZ}
    networks:
      - proxy
    volumes:
      - ${USERDIR}/mysql:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=Win!
      - MYSQL_PASSWORD=Win!
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    restart: unless-stopped


  nextcloud:
    image: linuxserver/nextcloud
    container_name: nextcloud
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=${TZ}
    depends_on:
      - db
    volumes:
      - /mnt/raid/nextcloud:/data
      - ${USERDIR}/nextcloud:/config
      #-  ${USERDIR}/nextcloud:/var/www/html
      #- ${USERDIR}/nextcloud/app/config:/var/www/html/config
      #- ${USERDIR}/nextcloud/app/custom_apps:/var/www/html/custom_apps
      #- ${USERDIR}/nextcloud/app/themes:/var/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    labels:
      - traefik.enable=true
      - traefik.backend=nextcloud
      - traefik.frontend.rule=Host:upload.${DOMAIN}
      - traefik.docker.network=proxy
      - traefik.basic.protocol=https
      - traefik.port=443
      - traefik.frontend.redirect.permanent=true
      - traefik.frontend.redirect.regex= https://(.*)/.well-known/(card|cal)dav
      - traefik.frontend.redirect.replacement=https://$$1/remote.php/dav/
      - traefik.frontend.headers.SSLRedirect=true
      - traefik.frontend.headers.STSSeconds=315360000
      - traefik.frontend.headers.browserXSSFilter=true
      - traefik.frontend.headers.contentTypeNosniff=true
      - traefik.frontend.headers.forceSTSHeader=true
      - traefik.frontend.headers.SSLHost=example.com
      - traefik.frontend.headers.STSIncludeSubdomains=true
      - traefik.frontend.headers.STSPreload=true
      - traefik.frontend.headers.frameDeny=true
    networks:
      - proxy
    expose:
      - 443
    restart: unless-stopped

Traefik toml: https://pastebin.com/cDUxQaLb

#logLevel = "DEBUG"
logLevel = "INFO" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC"

################################################################

defaultEntryPoints = ["http", "https"]
InsecureSkipVerify = true

[entryPoints]
 [entryPoints.http]
 address = ":80"
 [entryPoints.http.forwardedHeaders]
 [entryPoints.http.redirect]
 entryPoint = "https"
[entryPoints.https]
address = ":443"
 [entryPoints.https.forwardedHeaders]
 [entryPoints.https.tls]

[web]
address = ":8080"
################################################################
# Docker configuration backend
################################################################
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "xxxx.xxxxx"
watch = true
exposedbydefault = false

[acme]
email = "xxxx"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[acme.httpChallenge]
entryPoint = "http"

Любая помощь оказывается !!

1 Ответ

0 голосов
/ 15 мая 2019

Подошва -

config.php для следующего облака требует доверенного_прокси

"rust_proxies "=> ['10 .0.0.1 '],

При добавлении клиентский IP-адрес, наконец, ретранслируется.

https://docs.nextcloud.com/server/15/admin_manual/configuration_server/reverse_proxy_configuration.html

...