traefik 外部连接失败 - 443 已在使用中

问题描述 投票:0回答:2

我正在运行一台服务器,我通过 cloudflare 将我的域名指向我的服务器 IP,并通过 LetsEncrypt 为我的域名提供了签名的 SSL 证书。我的服务器正在运行 apache Web 服务器,使用 porto 443 进行 ssl 流量。 我安装了 docker 并运行了几个容器。我的目标是使用端口 443 启动并运行 traefik,并通过它路由所有 Docker 流量。这可能吗?

我在这里使用了这个:https://www.linuxserver.io/2018/02/03/using-traefik-as-a-reverse-proxy-with-docker/来编写我的traefik.toml文件和我的docker -撰写文件。

但是,每当我启动 docker-compose 时,除了 traefik 之外的所有服务都会启动。 我收到以下错误:

ERROR: for traefik Cannot start service traefik: driver failed programming external connectivity on endpoint traefik (2d10b64b47e62e7dcb5f94265529fb647e4ba62dbeeb43c201ea02d39f60b381): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use 错误:启动项目时遇到错误。

我想知道原因是否是我的域已经使用了 443 端口?! 我该如何解决这个问题?

感谢您的帮助!

docker-compose traefik
2个回答
0
投票

您正在 Linux 中使用 docker:

其中一些命令应该让您知道您正在使用它们:

sudo lsof -i -P -n | grep LISTEN

netstat -tulpn | grep LISTEN

示例:

docker-pr 2405 根 4u IPv6 28930 0t0 TCP *:443(听)

如果 443 被 docker 占用...这意味着除了 Traefik 之外,您在某些 YML 中还有一个暴露的端口 443(如果是其他应用程序则继续更改端口或关闭它 [pkill])

您可以尝试将YML的“服务”分离到不同的YML中,然后将它们一一打开,以便找到导致您冲突的镜像 (如果将它们分开,请记住创建适当的外部“网络”。)

(顺便说一句......我建议第一个开始的图像是 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


0
投票

我也有同样的问题。 我已经尝试了在 stackoverflow 和 github 上找到的所有内容。

只有这个对我有用

sudo lsof -i -P -n | grep LISTEN

我有这样的想法:

我决定杀死第一个PID(与80端口有关)

sudo kill -9 1876

然后我在网络上启动了 docker 服务,一切正常。万岁!!!

© www.soinside.com 2019 - 2024. All rights reserved.