我正在尝试在运行 docker 映像 (docker.io/existdb/teipublisher) 的 ECS 实例上运行 certbot。该映像运行良好,我已将其与自定义子域关联teipub.dh-dev.com使用弹性 IP。
尝试安装并运行 certbot 以便可以建立 Https 连接已被证明是出奇的困难。
以 root 身份运行,我使用以下命令安装 nginx:
sudo amazon-linux-extras list | grep nginx
sudo amazon-linux-extras enable nginx1
sudo yum clean metadata
sudo yum -y install nginx
然后,来自 nginx我创作的/etc/nginx/conf.d/teipub.dh-dev.com.conf
内容如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name teipub.dh-dev.com;
}
但现在运行时sudo nginx -c /etc/nginx/nginx.conf
重新加载新配置我得到了
这对我来说很有意义,因为当我构建任务定义以在 ECS 集群上运行我的映像时,我在主机端口 80 和 443 以及相应的容器端口之间使用了端口映射,这意味着某些东西已经在端口 80(以及 443)上监听。
正在运行sudo systemctl status nginx
,sudo systemctl status httpd
或者sudo systemctl status apache2
在运行 docker 映像的干净 ECS EC2 实例上找不到这些服务。因此,在我尝试运行它之前,nginx 尚未安装,更不用说运行了。
所以我的问题是:ECS 实例上不是已经有 Web 服务器了吗?它是什么?我可以在上面安装 certbot 吗?或者,什么在监听端口 80?
或者 - 是否有其他方法在 ECS 实例上使用 certbot?
顺便说一句,我认为这与此无关,我的主要域名(dh-dev.com 和www.dh-dev.com) 允许 https 连接,可能通过我的托管服务提供商提供的证书。
===更新===
根据@dave_thompson_085的评论,我现在明白了(见下图)一个名为的进程docker-proxy
正在监听端口 80 和 443。这就是为什么我无法使用 nginx 在这些端口上配置 certbot。任何关于如何进展的想法都欢迎...