Docker部署WEB 应用时,本地可以成功打开测试页,在公网上(阿里云服务器)却不能打开。
1、环境:阿里云服务器
2、CentOS7系统
3、Docker成功部署
这里前提docker 已经成功部署啦,现有有一个简单的测试案例,在docker上部署一个应用从而访问web。
接下来让我们尝试使用 docker 构建一个 web 应用程序。
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
通过 -p 参数来设置一样的端口:
docker ps 查看正在运行的容器
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
这时我们可以通过浏览器访问WEB应用
访问失败
指定外网端口为5000,
1 本地测试能否打开测试页
本地没有问题。
2 浏览器中访问
在任意一台电脑上输入公网IP+端口号 (此端口号为运行WEB应用时指定的端口号5000) 如我的阿里云公网IP为123111111 此时在任意一台有网络的浏览器地址栏输入公网IP:>端口映射的设置,以TP-LINK路由器为例:
1在IE浏览器的地址栏中输入19216811(网关,一般默认都是这个,详细的要咨询网管),进入路由器设置界面
2找到左边的“转发规则”选项。
3串口服务器对应的公网IP地址的端口号是1001,其在局域网内的IP地址是192168188。假如串口服务器所在的公网IP地址是:22151185218,那么电脑在设置其应该访问的IP地址是:22151185218,端口号为:1001。
另外对不同云服务器配置的差别,也分别做相关说明。
要想端口功能正常,需要做以下几个工作:
1、端口处于被监听状态,即有程序在监听端口;
2、服务器的防火墙打开了相应的端口;
3、云服务器的安全组策略有添加相关入站规则;
一、端口处于被监听状态
这个需要应用程序实现相关功能,具体需要自行实现(如果有命令行可以实现,烦请告之)。
二、防火墙打开了相应的端口
1在这里以firewall防火墙作为说明,如果是service防火墙,请自行百度或者改为firewall防火墙。
关闭service防火墙
打开firewall防火墙
如果云服务器本身使用的是firewall防火墙,则忽略以上步骤。
2打开端口
以端口9000-9049为例,分别打开tcp和udp端口
注意:一定要重启端口,否则端口打开失败
3查看端口打开情况
端口打开ok
三、入站规则
不同的云服务器,添加相关的安全组策略有所不同。这里只对我有过接触的服务器作说明,分别是国外的vultr、Microsoft的Azure(就是这个家伙用的service防火墙,折腾了我好久才搞明白,反人类啊!!!)、阿里云。
1vultr
添加入站规则
将入站规则加入到实例中
2Microsoft Azure
参考官方文档
>首先这台内部服务器所在的网络环境下有公网,也就是路由器设有固定公网IP,假设公网IP是20296134133,以8080端口来绑定1921681100,不同设备设置略不同但原理一样,在局域网外访问输入20296134133:8080,就能访问到192168100这台服务器上了首先局域网路由器做端口映射,将路由器的 内网地址:端口号 映射到 内网服务器的内网地址:端口,这2个端口号可以相同也可以不同。我们内网服务器的各种服务,都可以通过这种端口映射来提供给外界。
我们将内网服务器的ssh的22端口映射到路由器的10022,将内网服务器的nginx监听的80端口映射到路由器的10080,将ftpd服务监听的21端口映射到路由器的10021端口,mysqld服务监听的3306端口映射到外网的13306端口等。
案例:内网服务器配置nginx的web服务,来让外网访问。
1端口映射路由器内网地址 19216801:10080---19216803:80 (注意nginx可以监听各种端口,仅仅是80,如8080,10021等,只要您的服务器有空余的端口可用,都可以监听:)
2配置nginx配置监听80端口
3配置nginx虚拟主机test1com:80,test2com:80
4我们在外网通过在域名服务商配置域名a记录将test1com和test2com指向您的路由器外网地址(或者通过花生壳软件,或客户端本地hosts文件来做域名指向)
5通过如下地址访问:test1com:10080,test2com:10080就可以访问到这2个虚拟主机了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)