先说下版本:
Spring cloud: Hoxton.SR12
spring.cloud.alibaba: 2.2.9.RELEASE
spring.boot: 2.3.12.RELEASE
Linux Centos7
nacos-server:2.1.0
nginx: 1.20.2
环境说明:
nacos正常搭建三个集群 8849,8851,8853,能正常启动和访问,
nginx 做反向代理端口8002:浏览器访问nginx端口能正常转发nacos,一切都没有问题;
当通过Springboot配置文件连接nacos 地址更改为nginx时,项目启动报错,连接不上ngxin。
反复的查阅资料:最终可信的说法是nacos 2.X版本有端口偏移量,这个我信,因为在搭建nacos集群时,碰到了这个问题,当时端口定义为8849,8850,8851,最后启动后8849和8851能正常启动,8850报地址被占用。随后将8850改为8853,才得以解决。
nginx在浏览器上能正常转发到nacos节点,但是项目里连接不上nacos服务,警过一个星期的摸索,最终解决方案如下:
- 将linux 关机,然后依次启动nacos集群,保证nacos集群浏览器能正常访问。
- 编辑nginx.conf,在http 同级下新增stream 模块,其中所有端口都和你原来定义的端口加1000
- 启动nginx,如果报stream的错,可能是你在安装ngxin是没有安装stream模块。
nginx: [emerg] “stream“ directive is not allowed here in
解决:找到你之前解压的nginx的包,文件名为nginx带版本号那个,然后进入
执行如下指令:./configure --with-stream
等待安装
安装完后:执行make && make install
重点:将虚拟机关机重启
重启nacos,重启nginx - 浏览器访问nginx能正常转发到nacos页面。
- springboot部署如下,没什么特别之处,nacos的地址端口为nginx
- 启动项目:
- 访问nacos注册中心:服务成功注册上去了