i 在 docker 环境中托管一个应用程序。此应用程序在端口 3030 下侦听我的 IP 地址或域。连接工作正常。但没有 SSL。
我在 nginx 中创建了一个子域来为应用程序提供 SSL 证书。这个子域指向我的 ip 地址和端口。通过子域 application.domain.com 的连接可以通过 SSL 正常工作。
但现在我想阻止通过 ip/domain:3030 访问应用程序。 分别最好将这种请求重定向到子域以确保 SSL。
我有什么可能的选择来阻止通过域访问:端口以始终确保 SSL?
我试图在 ufw 中阻止这个端口。但无论如何都可以访问应用程序。 我将我的应用程序配置为仅在本地主机上侦听,但它可以通过域访问:没有 SSL 的端口。因为一些 docker 配置?
谢谢你的建议
如果 Nginx 和您的应用程序在 Docker 中运行,那么您可以将两个容器放在同一个 Docker 网络中,并且只发布 Nginx 容器的 HTTPS 端口。 Nginx 将能够通过端口 3030 连接到应用程序,即使当两个容器都在同一网络上时它没有发布。 Docker 文档
示例码头工人组成:
services:
app:
build: .
networks:
- internal_network
nginx:
image: nginx
ports:
- "443:443"
networks:
- internal_network
networks:
internal_network:
如果 Nginx 没有在 Docker 中运行,那么您可以尝试使用 Docker 主机防火墙将来自 Nginx IP 地址的流量列入白名单到容器 https://docs.docker.com/network/iptables/
我觉得第一个更好