提问人:TubaControl 提问时间:2/5/2023 更新时间:2/6/2023 访问量:542
为什么 firewalld 与 Docker 结合使用不允许 https 连接
Why does firewalld in combination with Docker not allow https connections
问:
我没有太多的 Linux 经验,但我遇到了 firewalld 的问题。
我和我的朋友最近使用 certbot 获取了 Linode 盒子的 ssl 证书。
该计划是让 nginx 在 subdomain.domain.com 上为 NEXTJS 应用程序提供服务,并在 subdomain.domain.com/api 上通过 Docker 运行 RESTful api。
http 配置运行良好。
但是在 https 下,由于神秘的原因,firewalld 不允许端口 443 上的外部连接。
我得出了这个结论,因为通过使用 sudo systemctl stop firewalld 的强大功能,一切又恢复了正常。
预期是,在使用 firewalld CLI 将包括 https 在内的常见服务添加到 docker 区域后,应允许 https 流量,而无需禁用防火墙。
重现步骤如下:
sudo systemctl start firewalld
sudo firewall-cmd --get-active-zones
docker
interfaces: docker0
sudo firewall-cmd --zone=docker --add-service=http --permanent
sudo firewall-cmd --zone=docker --add-service=httpd --permanent
sudo firewall-cmd --zone=docker --add-service=dns --permanent
sudo firewall-cmd --zone=docker --add-service=dhcpv6-client --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --get-active-zones
docker
interfaces: docker0
sudo firewall-cmd --zone=docker --list-services
dhcpv6-client dns http https
subdomain.domain.com 时仍然出现超时错误。
sudo firewall-cmd --zone=docker --add-port=443/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=docker --list-ports
443/tcp
subdomain.domain.com 时仍然出现超时错误。
次优解决方法是使用 sudo systemctl stop firewalld 的强大功能来禁用防火墙保护。
sudo lsof -i :443 显示了四个 nginx 进程。
操作系统是 openSUSE,但我不记得它是 LEAP 还是 Tumbleweed。所有软件包都是最新的。
我使用网站 https://www.yougetsignal.com/tools/open-ports/ 来诊断问题。
我敢肯定我忘记了很多重要的细节,但如果需要,我稍后会进行编辑修改。
干杯。
答:
我认为服务器最终只需要重新启动。我们现在已经实现了我们的目标。
我的朋友说,他注意到 node16 进程正在“逃跑”并使用 99% 的处理资源,这显然是一个常见问题。
评论