无法访问Nginx容器的分析思路
文章目录1 问题背景2 分析思路3 总结1 问题背景最近在阿里云重新搭建了生产环境的若依系统,但是一直无法访问若依系统的后台首页。在本地用IDEA加虚拟机是完全没问题,能正常访问。2 分析思路先检查阿里云服务器是否开启了防火墙,一般都开启了,因此需要在防火墙配置若依系统用到的端口号,相关的命令行如下:# 查看防火墙是否开启firewall-cmd --state# 或systemctl statu
1 问题背景
最近在阿里云重新搭建了生产环境的若依系统,但是一直无法访问若依系统的后台首页。在本地用IDEA加虚拟机是完全没问题,能正常访问。
2 前言
本篇博客适合有一定Java基础,接触过服务器、生产环境的部署、玩过Nginx、玩过前后端、能看懂Linux操作命令、前后端分离的部署、Docker容器的后端开发者。看的过程中如有遇到看不懂的部分建议百度搜索略作了解,再继续往下看。虽然本篇博客不一定能解决所有小伙伴遇到的问题,但是笔者结合实际项目来阐述分析思路或许能给你些许灵感,博文篇幅比较长,请耐心阅读。
3 端口介绍
由于后面讲述分析思路会出现多个端口号,这里先提前给出各个端口号方便理解下文:
- Nginx容器端口号:80
- Nginx容器在服务器上的端口号:11180
(解释:容器都会有2个端口号,外部请求访问到11180端口号,服务器将11180端口映射到容器的端口80,Nginx容器监听到80端口有请求) - 若依开源项目后端端口号:19393
- 若依开源项目前端端口号:11180
4 请求访问流程介绍
浏览器访问http://阿里云服务器IP:若依前端端口号11180/
,阿里云服务器监听到11180
有访问,将映射到Nginx容器端口号80
,nginx处理静态资源以及转发请求到后端19393
。
5 分析思路
- 先检查阿里云服务器是否开启了防火墙,一般都开启了,因此需要在防火墙配置若依系统用到的端口号,相关的命令行如下:
# 查看防火墙是否开启
firewall-cmd --state
# 或
systemctl status firewalld
# 查看防火墙已开启的端口
firewall-cmd --zone=public --list-ports
# 添加防火墙端口号
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
# 删除防火墙端口号
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
# 重新加载防火墙配置
firewall-cmd --reload
-
阿里云服务器还默认开启了端口安全策略,需要前往阿里云Web控制台配置端口号才能正常访问项目
-
涉及到Nginx容器,必须要检查nginx配置文件的监听端口号是否正确。注意,这里是讲Nginx容器,非容器不需要太关注这点。首先使用
docker ps -a
命令查看Nginx容器监听的端口号,如下图所示,后面的是Nginx容器的端口号,前面的是阿里云服务器的端口:
如上图所示:当我访问阿里云服务器IP:11180
地址时,服务器会将数据转发到Nginx容器的80端口。一个是服务器的端口,是物理存在的,一个是容器端口,是逻辑上虚拟的。验证能否访问成功,最简单的就是输入curl http://localhost:阿里云服务器端口号
-
带着前面看到的
11180
以及80
端口去检查Nginx容器的配置文件,Nginx容器的配置文件是一个/xxx/conf.d/default.conf
。检查配置文件中监听的端口号是不是Nginx容器的端口号80
,如下所示:
-
检查项目中前端配置的端口与Nginx容器配置的阿里云服务器端口
11180
一致。因为前端项目是打包放在了Nginx容器的挂载的数据卷路径上面的,因此要与服务器端口一致,而不是容器的端口。 -
检查Nginx配置文件转发到后端项目的端口号是否与后端项目配置的一致。如下图所示:
如上图所示19393
就是后端项目的端口号 -
检查Nginx配置文件配置的前端静态资源(前端的dist包)路径是否正确。需要使用
docker inspect nginx
命令查看Nginx容器挂载的数据卷路径。如下图所示:
我们把前端的资源包放在服务器的路径上,但是Nginx配置文件中要写容器内的路径。
3 总结
- 检查防火墙端口号
- 检查配置文件配置的端口
- 用
curl http://localhost:Nginx容器的阿里云服务器端口号
测试是否能通
更多推荐
所有评论(0)