我正在运行服务器,我通过cloudflare将我的域名指向我的服务器IP,并通过LetsEncrypt为我的域名签署了SSL证书。我的服务器使用porto 443为ssl流量运行apache webserver。 我安装了docker并运行了几个容器。我的目标是使用端口443启动并运行traefik,并通过它路由所有docker流量。这甚至可能吗?
我在这里使用它:https://www.linuxserver.io/2018/02/03/using-traefik-as-a-reverse-proxy-with-docker/来编写我的traefik.toml文件和我的docker-compose文件。
然而,每当我启动docker-compose时,除了traefik之外,所有服务都已启动。 我收到以下错误:
错误:对于traefik无法启动服务traefik:驱动程序在端点traefik上编程外部连接失败(2d10b64b47e62e7dcb5f94265529fb647e4ba62dbeeb43c201ea02d39f60b381):启动userland代理时出错:listen tcp 0.0.0.0:443:bind:地址已在使用中 错误:在启动项目时遇到错误。
我想知道原因是我已经在我的域名中使用了端口443了吗?! 我该如何解决这个问题?
感谢您的帮助!
答案 0 :(得分:0)
您在Linux中使用docker:
其中一些命令可以为您提供使用它们的线索:
sudo lsof -i -P -n | grep LISTEN
netstat -tulpn | grep LISTEN
示例:
docker-pr 2405 root 4u IPv6 28930 0t0 TCP *:443(听见)
如果443被docker占用...这意味着你在某些YML中有一个暴露的端口443,除了Traefik之外(如果是其他应用程序继续更改端口或关闭它[pkill])
您可以尝试将不同YML中的YML“服务”分开并逐个打开它们,以便找到导致您发生冲突的图像 (如果你将它们分开,请记住创建适当的外部“Networks”。)
(顺便说一句......我建议第一张图片开始是traefik之一)
(您也可以复制并粘贴YML文件以获得更好的帮助。)
修改
RewriteEngine on
RewriteCond %{HTTPS} off
# RewriteCond %{SERVER_PORT} ^9000$
RewriteRule ^(.*)$ https://%{HTTP_HOST}:9443%{REQUEST_URI}
toml config traefik中的edit2 :(我不知道什么有效,试试吧)
# Entrypoints, http and https
[entryPoints]
# http should be redirected to https
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
# https is the default
[entryPoints.https]
address = ":9443"
[entryPoints.https.tls]
我遇到的另一个解决方案是将你的主apache作为代理隧道,但是你不需要带来traefik:P
答案 1 :(得分:0)