请教一个问题:,cento上部署了一个前后端项目,外网前端可以访问,但是无法登录,这个怎么定位原因呢?
ps:我在服务器上直接访问登录都没问题.
暂定解决方法,:由于重启容器问题可以及时解决,所以,做了个定时任务每天重启一下docker,但是造成原因一直无法找到。
//现在重启docker都无法解决了,必须重启整个服务器才行,无语啦
找到error了:
后端接口不通。
(1) 你可以使用telnet工具
telnet IP port
如:telnet 192.168.1.10 80 端口,如果端口没有开启监听则会显示连接失败。
若端口有开启监听,telnet端口是通的会显示一个白色的光标并闪烁,如下图:
(2) 也可以使用PostMan模拟后端接口请求
如果确定了nginx不通。
firewall 默认关闭的, 您先把它关了。如果业务允许, 执行下iptables 放行 [你的端口] 的命令。
内容如下
iptables -I INPUT -p tcp --dport [你的端口] -j ACCEPT
如果执行后还是无法访问的话,执行下 telnet 127.0.0.1 [你的端口]
另外,nginx查看日志,可以参考
telnet测试通过
telnet 127.0.0.1 [你的端口] --这项是在服务器上测试还是在我自己电脑测试呢
另外nginx是集成在docker容器里面的,如何获取日志内容呀
而且我重启服务器后问题异常自动消失,
会触发登录接口,异常的情况就没有这条日志.;感觉像是请求被过滤了一样.
@少年Dev:
docker logs --since 30m 容器Id
如果docker 没有错误日志。
端口访问问题。阿里云服务器安全组开放指定端口无法访问问题记录
这样操作了还是不行,就把docker重启一下。
重启docker:systemctl restart docker
然后把你的容器重启一下,再试。
更多问题,可以上我的小站52interview看看,多多交流。
@智客工坊: 只能看到这个:
@智客工坊: 重启docker容器,服务恢复,但是只能维持四个小时。
如果没有配置NGINX的话,检查防火墙是不是不允许通过;
可以把防火墙关了,试试
已经关闭很久了.
这是服务的问题还是网络的问题呢?,本地可以登录,应该不是服务的问题哈??
查看相关错误日志吧,nginx转发日志、网关转发日志
超时,查这两个地方差不多了
怎么查,这位老师可以教我一下么
@少年Dev:
登录nginx、网关的安装的服务器,找到日志所在目录,,接着就查看就好了
grep命令用起来
@快乐的凡人721: 这套服务是docker打包部署的,向Nginx,redis都在一个容器里面
@少年Dev:
容器里面的 日志 没有弄到 宿主机吗?
没有的话,登录 容器docker 去检查咯。
@快乐的凡人721: [root@localhost /]# docker logs -f -t --since="2023-02-16" 296ad76cd003
2023-02-16T01:09:45.028197610Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2023-02-16T01:09:45.028328036Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2023-02-16T01:09:45.268663733Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2023-02-16T01:09:45.595096344Z 10-listen-on-ipv6-by-default.sh: info: IPv6 listen already enabled
2023-02-16T01:09:45.595560102Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
2023-02-16T01:09:45.779561528Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2023-02-16T01:09:45.830575376Z /docker-entrypoint.sh: Configuration complete; ready for start up
2023-02-16T09:12:45.420066033Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2023-02-16T09:12:45.420115353Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2023-02-16T09:12:45.679583203Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2023-02-16T09:12:46.107677441Z 10-listen-on-ipv6-by-default.sh: info: IPv6 listen already enabled
2023-02-16T09:12:46.108061422Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
2023-02-16T09:12:46.249011149Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2023-02-16T09:12:46.272411921Z /docker-entrypoint.sh: Configuration complete; ready for start up
@快乐的凡人721: 看着没异常哦
后端接口连接超时,一般原因都是因为防火墙,服务器ok是因为在本地是没有防火墙的限制的
防火墙这部分考虑了,我reboot了一下centos服务器,上午可以外网登录,到了下午就又不行了,现在就是不定,二且每次都要重启服务器问题才能得到解决.
@少年Dev: 定时job循环在外网,telnet 域名 端口,判断是否端口防火墙被关掉了,比如每10min测试一次。
有可能会有什么防护软件之类的自动把防护墙关掉
@人间春风意: 这个怎么做呢, job登录接口吗?
确实有一套防火墙软件,也是第三方部署的,之前咨询过了,说端口映射都正常.
@少年Dev: 直接在外网找个电脑,放个定时job的小程序,比如java程序,exe,php也行,简单跑一下测测就行
@人间春风意: 这个不会写哦,可以copy一个我测测不,拜托拜托
@少年Dev: https://www.cnblogs.com/uoky/articles/17130689.html 我这边测OK的
如果是变幻了登陆接口的ip地址,这就需要看代码了,肯定是代码的问题,是不是这套代码有两个使用环境,环境切换出了问题?
– 人间春风意 1年前以前我也遇到过在外网访问结果接口地址变成了内网,发现原来是配置文件配置跳转地址时走成dev了
@人间春风意: 嗯嗯,是有两套环境,win环境与linux环境,但是docker里面的配置环境问我找不到,
– 少年Dev 1年前使用了暂时解决方案,现在排除问题发生原因,重启docker容器问题解决,那应该是代码层面的问题,排除了网络映射与centos系统问题.
– 少年Dev 1年前@人间春风意: 同一个环境,外网只是做了端口映射
– 少年Dev 1年前@少年Dev: 这个问题还没有解吗?还是跟之前错误显示效果一样?
– 人间春风意 1年前@人间春风意: 对的,
– 少年Dev 1年前@人间春风意: 有什么好的办法么?
– 少年Dev 1年前@少年Dev: 分别在内外网 postman接口效果一样吗?
– 人间春风意 1年前@人间春风意: 不一样,外网的请求参数就没过去,应该是跨域问题.
– 少年Dev 1年前