我正在使用Docker组合文件来创建nginx和tomcat容器。 nginx将用作反向代理,因此它将访问tomcat。我能够使用天蓝色的容器instaces成功地使用2个单独的容器完成此操作。您点击了nginx的URL,然后将您重定向到tomcat securley,因为nginx具有HTTPS和证书。
直到一切正常。但是问题在于,如果单独访问http的tomcat Ip,也可以访问该容器,那是不安全的。我只想让nginx访问tomcat。如何做到这一点?我正在尝试使用docker compose,我知道容器将使用相同的网络并且可以相互连接,但是我如何才能实现nginx连接到Tomcat和tomcat仅可以通过nginx的重定向来访问https,并且该tomcat无法单独通过http访问。这是我拥有的YML,但是我不知道如何管理端口以实现所需的功能。这可能吗?
version: '3.1'
services:
tomcat:
build:
context: ./tomcat
dockerfile: Dockerfile
container_name: tomcat8
image: tomcat:search-api
ports:
- "8080:8080"
nginx:
build:
context: ./nginx
dockerfile: Dockerfile
container_name: nginx
image: nginx:searchapi
depends_on:
- tomcat
ports:
- "80:80"
- "443:443"
最佳答案
通过在docker-compose中使用ports选项,您可以在外部公开该端口。如果您从tomcat中删除端口选项,则该选项仍将起作用,因为该容器应仅在内部为docker网络公开内部端口8080。
关于docker - docker组成nginx和tomcat,仅在互联网上公开nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52062042/