背景
所以昨天我在玩我们的服务器。
上面有一个 docker-compose 进程,运行着大约 6 个容器,其中一个是 Nginx。在我昨天试用它之前,它能很好地提供文件服务。
我做了什么
我在 DO 上注意到,我可以通过跑步来升级我的指标curl -sSL https://agent.digitalocean.com/install.sh | sh
。这很酷吧?
在我这样做之后,奇怪的事情开始发生。我不能确定这是因果关系,但肯定是相关性。
我尝试过
我有我的 DO droplet,我运行docker-compose up -d
并得到:
错误:对于 root_nginx_1,无法启动服务 nginx:驱动程序无法在端点 root_nginx_1 上编程外部连接:启动用户空间代理时出错:监听 tcp 0.0.0.0:80:绑定:地址已在使用中
好吧,这很奇怪……
之前还可以运行,现在却无法启动了?
我跑去ps aux -P | grep nginx
看看发生了什么事并得到:
root 1514 0.0 0.1 124972 1388 ? Ss 12:57 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 1517 0.0 0.2 125332 2960 ? S 12:57 0:00 nginx: worker process
root 5716 0.0 0.0 12944 940 pts/1 S+ 13:16 0:00 grep --color=auto nginx
嗯,为什么还有这些其他的 nginx 进程?
好的,然后我运行pkill nginx
以摆脱它们,然后再次运行docker-compose up -d
,一切都启动正常,没有错误。
但是,现在当我访问我的example.com
网站时,我没有得到任何回应。
我以为这可能是配置问题,结果运行docker logs root_nginx_1
后什么都没有。至少应该有一些标头或请求被记录下来。
然后,我拼命地最后一次尝试sudo shutdown -r now
,然后重新开始整个过程。
与服务器上运行的 nginx 进程的结果相同。
所以,
- 这个nginx进程在服务器启动时运行是正常的吗?
- 如何让我的 nginx 容器无冲突地监听端口 80?
答案1
在听取了@EEAA 的建议并实际研究了 DO Agent 到底在做什么之后,发现它确实在使用端口 80 和 443。
DigitalOcean Agent 使用端口 80 和 443 来传输传出数据。无需传入访问。由于 Agent 仅使用端口来传输传出数据,因此您可以安全地运行 Web 服务器而不会受到干扰。
端口 80 用于联系 DigitalOcean 元数据服务以获取身份验证令牌。代理使用此令牌向指标后端进行身份验证并加密其传输。
经过进一步阅读sudo apt-get purge do-agent
并sudo rm /etc/apt/sources.list.d/digitalocean-agent.list
成功了。
您可以在这里,我建议你去读一下全部内容。