Centos Docker代理端口-防火墙

时间:2020-06-10 07:31:16

标签: docker proxy docker-compose centos firewall

我有一些我用docker-compose运行的项目。该项目的前端在端口4200,后端3000和数据库5342上。当我使用docker-compose运行它时,所有这些端口都是公共的。这样,我(每个人都可以)访问后端https://myserver:3000/api

如何禁用docker-proxy端口公开?我的解决方案是我有nginx,用作myapp.myserver.com并重定向到本地前端端口4200(nginx.conf)-前端正在使用后端端口3000和后端5432-但这些端口不应是公共的。公共端口只能是80、443、22(ssh)等。

查看我的netstat:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               NASLOUCHÁ  11972/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               NASLOUCHÁ  848/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               NASLOUCHÁ  1149/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               NASLOUCHÁ  11972/nginx: master 
tcp6       0      0 :::9000                 :::*                    NASLOUCHÁ  16995/docker-proxy  
tcp6       0      0 :::5000                 :::*                    NASLOUCHÁ  14069/docker-proxy  
tcp6       0      0 :::5001                 :::*                    NASLOUCHÁ  11557/docker-proxy  
tcp6       0      0 :::8080                 :::*                    NASLOUCHÁ  11402/docker-proxy  
tcp6       0      0 :::80                   :::*                    NASLOUCHÁ  11972/nginx: master 
tcp6       0      0 :::22                   :::*                    NASLOUCHÁ  848/sshd            
tcp6       0      0 ::1:25                  :::*                    NASLOUCHÁ  1149/master         
tcp6       0      0 :::443                  :::*                    NASLOUCHÁ  11972/nginx: master 
tcp6       0      0 :::8000                 :::*                    NASLOUCHÁ  17006/docker-proxy

2 个答案:

答案 0 :(得分:0)

您也可以使用nginx.conf重定向到后端端口。例如,api.myserver.com会将流量路由到后端端口3000,db.myserver.com会将流量路由到端口3000。所有这些容器都应该位于同一docker network上,以便于路由。

Nginx可以控制哪些端口暴露于外界。

这样,您的nginx将作为ingress proxy服务器。所有连接均通过nginx路由,而世界其他地方则忽略了内部使用的端口。这个想法是用来向全世界开放kubernetes背后的服务的。

答案 1 :(得分:0)

因此我在映射端口时通过更改来解决它:

发件人:

ports:
      - "3000:3000"

收件人:

ports:
      - "127.0.0.1:3000:3000"

现在,它仅在运行应用程序的VPS本地主机上可用,无法调用https://myserverip.com:3000/api