我几天来一直在尝试解决这个问题,但我没有找到答案,而且在互联网上也没有找到任何有用的信息,因此我非常感谢您的每一个提示。
几周前,我设置了一个新的 Ubuntu 16.04.4 LTS 服务器。我安装了 docker 并在其上运行了一个内部网页。现在我们有了一个额外的网页,我想让它们可以通过两个不同的子域访问。
- appone.qwert.de
- qwert.de
因此我购买了域名 qwert.de,并要求提供商提供固定 IP 地址。现在可以通过域名 qwert.de 访问我的服务器。
然后我发现 traefik 几乎可以满足我的所有需求。所以我使用以下配置安装了它:
debug = false
logLevel = "ERROR"
defaultEntryPoints = ["https","http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[retry]
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "qwert.de"
watch = true
exposedbydefault = false
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[acme.httpChallenge]
entryPoint = "http"
然后我使用以下 docker-compose 命令启动容器:
version: '2'
services:
traefik:
image: traefik:latest
restart: always
ports:
- 80:80
- 443:443
networks:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/docker/traefik/traefik.toml:/traefik.toml
- /srv/docker/traefik/acme.json:/acme.json
container_name: traefik
networks:
web:
external: true
一切正常,我收到了典型的 traefik “404 页面未找到”消息。之后,我使用以下代码启动一个基本的 nginx 容器:
sudo docker run -d --label "traefik.frontend.rule=HOST:appone.qwert.ch" --network web nginx:latest
但是当我尝试访问网站 appone.qwert.ch 时,我也收到典型的“404 页面未找到”消息。
我不知道我是否必须以某种方式使用新域名配置服务器或者我是否做错了什么。
我的 /etc/hosts/ 文件如下所示:
127.0.0.1 qwert.de Linux-Server
127.0.1.1 Linux-Server
212.153.72.45 qwert.de Linux-Server
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
我非常感谢每一个回复。
答案1
你需要使用Host
而不是HOST
sudo docker run -d --label "traefik.frontend.rule=Host:appone.qwert.ch" --network web nginx:latest