菜鸟之旅nginxdockerspringcloud部署

34次阅读

共计 1788 个字符,预计需要花费 5 分钟才能阅读完成。

背景

后台采用 spirngcloud 的 eureka 做服务注册与发现,前台 vue 部署 nginx 代理服务器统一访问 zuul 网关。本地服务经过测试好以后,部署服务器上出现一堆问题,敲了 2 天的 liunx 命令,看似简单的部署,实际小问题不断,这篇文章记录一下出现的问题解决过程

问题列表

  • eureka 由于保护机制导致一些已经下线的服务器依旧存在,通过 feign 访问到的服务是下线的服务,出现访问问题

本地 idea 启动服务 A 往 eureka 集群 x 注册一个服务,liunx 使用 docker 生成一个镜像,通过 docker run 启动服务 A,往 eureka 集群 y 注册了一个服务,在 eureka 集群上存在两个相同服务名的服务 A, 关闭本地 idea 中启动的服务,eureka 保护机制存在集群 x 上的服务还存在,现在有些 feign 访问的是 eureka 集群 x 的服务,有些 feign 访问的是 eureka 集群 y 的服务。这导致集群 x 的服务 A 由于关闭了访问不通。解决办法最简单的重启 eureka 集群服务

  • idea 服务部署上去是代码不是最新问题

出现这个问题是 maven 打包时没有做 maven clean 的操作,对相关的依赖模块做 maven clean maven install 重新打包部署到服务器上

  • nginx 网关 502 问题

出现这个问题是目标服务器开启了防火墙没有加入可访问的端口,导致 nginx 代理访问目标服务器失败,可以在 centos7 上安装 telnet 工具测试一下 ip 端口是否通畅,其他的端口检查方法:https://www.cnblogs.com/kerry…

  • docker 重启服务出现 iptables: No chain/target/matchby that name.

开启了防火墙增加了一些端口,重启防火墙以后,重启 docker 服务遇到上面的问题,需要重启 docker 服务,centos7 下使用 sudo systemctl restart docker 命令。

  • 阿里云服务器有些端口不可用

安全组策略添加了端口,服务器防火墙开启并加入安全组的端口,发现还是不能访问. 使用 nmap 查看开放的端口:nmap 服务器地址,发现有部分端口关闭了,如下图

防火墙端口开发情况

安全组加入情况

实在解决不了,提交工单给售后工程师,售后工程师第一步要求在服务器执行命令:netstat -ano | grep 6666 查看端口连接情况,输出的是空信息,说明没有处于监听状态

检查一下使用端口的应用程序是否已经正常启动,如果没有应用程序使用端口,那么这个端口通过 telnet 是访问不通的。
这里的原因:没有应用程序使用访问不通的端口,docker 安装 nginx 外部 6667 端口映射容器 80 端口,在 nginx.conf 配置了两个 server 一个 server 监听 80 端口,这时候外部访问 6667 就会来到这个 80 端口上,另外一个 server 配置了 6666 端口,这个 6666 端口在 docker nginx 启动容器中没有指定映射,因此 6666 端口是没有在使用的,可以在运行 docker 的 nginx 容器时映射多端口,这样宿主机的 6666 端口映射到第二个 server 绑定的端口上,docker run -p 80:80 -p 6666:6666 这里的第二个 - p 的第二个 6666 就是 server 绑定的端口

  • docker 部署 nginx 容器已经运行,但是外网访问不了

检查云服务器安全组配置,服务器防火墙配置,这里都配置好了,之所以出现这个原因是我端口映射出问题,docker run –name nginx-test -p 6667:6667 -d nginx 因为第二个 6667 没有在 nginx.conf 的 server 下绑定所以不对访问不了,可以增加一个 server 进行端口绑定,也可以改成 docker run –name nginx-test -p 6667:80 -d nginx,因为 nginx 的默认配置文件 conf.d 下有个 default.conf 里面已经存在一个 server 绑定了 80 端口,这样成功成功运行且能够通过外网访问到 6667 端口

  • google 浏览器对一些端口做了屏蔽,比如 6666

也就是说上面费劲千辛万苦部署的 6666 端口不能访问,具体查看 google 屏蔽的端口:https://www.jianshu.com/p/7b5…。
解决办法二级域名绑定同一个服务器上,nginx 做域名分发。这样二级域名也可以使用 80 端口

正文完
 0