簡體   English   中英

帶Nginx容器的Traefik

[英]Traefik with nginx container

我花了很多時間,但沒有找到任何解決方案。 我已經設置了Traefik和Nginx容器,這是我的docker-compose.yml

version: '3'
networks:
  proxy:
    external: true
  internal:
    external: false
services:
  mysql:
    image: 'mysql:5.7'
    environment:
      MYSQL_ROOT_PASSWORD: null
    networks:
      - internal
    labels:
      - traefik.enable=false
  adminer:
    image: 'adminer:latest'
    labels:
      - traefik.backend=adminer
      - 'traefik.frontend.rule=Host:db-admin.xxxx.xyz'
      - traefik.docker.network=proxy
      - traefik.port=8080
    networks:
      - internal
      - proxy
    depends_on:
      - mysql
  portainer:
    image: portainer/portainer
    networks:
      - internal
      - proxy
    labels:
      - "traefik.frontend.rule=Host:portainer.xxxx.xyz"
      - "traefik.port=9000"
      - "traefik.backend=portainer"
      - traefik.docker.network=proxy
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    restart: unless-stopped
  Nginx-Pro:
    image: nginx:latest
    container_name: Nginx-Pro
    labels:
      - traefik.backend=Nginx-Pro
      - traefik.frontend.rule=Host:new.xxxx.fr
      - traefik.docker.network=proxy
      - "traefik.port=80"
      - "traefix.port=443"
      - "traefik.frontend.entryPoints=http"
    networks:
      - internal
      - proxy
    depends_on:
      - mysql
    volumes:
      - /var/www/nginx-pro/:/var/www/
      - /etc/nginx/nginx-pro/:/etc/nginx

因此,我還在啟用/ etc / nginx / sites-enabled的服務器上設置了虛擬主機,也將日志添加到traefik conf中,但沒有任何反應。

這是我的虛擬主機配置:

server {
        listen *:80;
        root /var/www/new.xxx.fr;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name new.xxx.fr www.new.xxx.fr;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                                try_files $uri $uri/ /index.php?$args;
        }

        location ~ /\.ht {
                deny all;
        }
}

問題是我總是從Traefik收到Bad Gateway消息。

您需要添加traefik.frontend.passHostHeader以便nginx可以將Host標頭與server_name匹配。

但是由於此nginx僅適用於您已經與traefik.frontend.rule=Host:new.xxxx.fr匹配的一個域, traefik.frontend.rule=Host:new.xxxx.fr您也可以將server_name保留在nginx vhost配置之外,並使用默認配置。

還要刪除"traefix.port=443"因為您僅在traefik和nginx之間使用http,而您想要的是"traefik.frontend.entryPoints=http,https" ,也可以添加"traefik.frontend.headers.SSLRedirect=true"始終將http重定向到https。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM