Docker部署项目无法访问,登录超时完整排查攻略

项目背景:迁移前后端应用,prod环境要求保留443端口,开发环境37800端口,后端容器端口为8000,前端为80,fastAPI对外端口为41000

生产环境部署在VM01,开发环境部署在VM03,在VM01配置nginx转发

[root@vm01 conf.d]# docker ps | grep mig
73fbafgc2811   mig_backend-buildnum3                                           "python ./main.py"       5 days ago      Up 5 days              0.0.0.0:40000->8000/tcp         mig_backend
07db12b64b75   mig_frontend-buildnum3                                        "/docker-entrypoint.…"   5 days ago      Up 5 days              0.0.0.0:40001->80/tcp           mig_frontend
[root@wx8vm00007 conf.d]# ping 192.168.119.120
PING 192.168.119.120 (192.168.119.120) 56(84) bytes of data.
64 bytes from 192.168.119.120: icmp_seq=1 ttl=64 time=0.304 ms
64 bytes from 192.168.119.120: icmp_seq=2 ttl=64 time=0.277 ms
^C
--- 192.168.119.120 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1006ms
rtt min/avg/max/mdev = 0.277/0.290/0.304/0.021 ms
[root@vm01 conf.d]# ss -tunlp | grep 37800
tcp   LISTEN 0      511          0.0.0.0:37800      0.0.0.0:*    users:(("nginx",pid=1340282,fd=6),("nginx",pid=1340281,fd=6),("nginx",pid=1340280,fd=6),("nginx",pid=1340279,fd=6),("nginx",pid=1340230,fd=6))
问题:vm01与vm03网络互通,nginx监听37800端口,sso配置正确,访问前端页面登录超时

以下是排查步骤:

1. 检查后端服务是否监听正确接口

  • 确认后端服务(运行在Docker容器中的Python应用)是否绑定到 0.0.0.0:8000,而非 127.0.0.1:8000

  • 验证方法:进入容器执行 docker logs <容器id>,查看8000端口是否监听在 0.0.0.0

  • 修复:如果应用绑定到 127.0.0.1,修改其配置以监听 0.0.0.0

  • [root@vm01 ~]# docker logs 492
    开始加载 service.db
    DATABASE_URL='mysql+pymysql://此处手动打🐎charset=utf8mb4'
    SessionLocal 定义完成
    INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
    INFO:     Started parent process [1]
    SessionLocal 定义完成
    SessionLocal 定义完成
    SessionLocal 定义完成
    SessionLocal 定义完成
    INFO:     Started server process [8]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Started server process [12]
    INFO:     Waiting for application startup.
    INFO:     Started server process [15]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Started server process [9]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Started server process [14]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Application startup complete.
    INFO:     Started server process [11]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Started server process [10]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Started server process [13]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    

    可见容器内部已正常启动,故排除容器内部问题。

2. 确认Docker端口映射正确

  • 确保宿主机的40000端口已正确映射到容器的8000端口。

  • 验证方法:在宿主机运行:

    ss -tuln | grep 40000
    

    应看到 0.0.0.0:40000 的监听状态。

  • 修复:如果未监听,重启容器并确保使用 -p 40000:8000 参数。

    [root@vm01 ~]# ss -tuln | grep 40000
    tcp   LISTEN 0      2048         0.0.0.0:40000      0.0.0.0:*
    
  • 可见端口映射正常,故排除Docker端口映射问题。

3. 测试后端端口连通性

  • 从Nginx服务器直接测试与后端40000端口的连通性:

    telnet 192.168.119.120 40000  # 或使用 nc -zv 192.168.119.120 40000
    
  • 结果分析

    [root@vm01 ~]# telnet 192.168.119.120 40000
    Trying 192.168.119.120...
    Connected to 192.168.119.120.
    Escape character is '^]'.
    

    可见连接成功,到这里我排查的思路为:

    • if(连接成功) {Nginx配置或应用路径问题}

    • else {防火墙/Docker/服务未启动}

      但还是看了看防火墙

4. 检查防火墙规则

  • 在宿主机(192.168.119.120)检查防火墙是否允许40000和40001端口:

    firewall-cmd --list-ports  # 若使用firewalld
    iptables -L -n -v         # 检查iptables规则
    
  • 修复:开放端口:

    firewall-cmd --add-port=40000/tcp --permanent
    firewall-cmd --reload
    

此处VM01和03为1-65535全开放,故排除防火墙问题

5. 检查Nginx代理配置

  • 路径问题:确保proxy_pass末尾的斜杠正确。例如:

    location /rqone {proxy_pass http://192.168.119.122:40000;  # 无斜杠,保留原始URI路径
    }
    
  • 日志调试:检查Nginx错误日志:

    tail -f /var/log/nginx/error.log
    

    观察是否有 connect() failed (111: Connection refused) 或超时错误。

6. 验证HTTPS证书和域名

  • 使用curl绕过证书验证测试:

    curl -vk https://<your domain>:port/接口
    
  • 检查证书是否有效且域名匹配:

    openssl s_client -connect <your domain>:port -servername <your domain>
    

7. 简化测试(临时关闭SSL)

  • 修改Nginx配置,暂时禁用SSL,改用HTTP监听:

    listen 37800;  # 移除ssl
    # ssl_certificate... 注释掉SSL相关行
    
  • 重启Nginx后通过HTTP访问,确认是否是SSL问题。

8. 检查SELinux/AppArmor

  • 临时禁用SELinux:

    setenforce 0
    
  • 如果问题解决,调整策略:

    semanage port -a -t http_port_t -p tcp 37800
    

上述步骤均确认无误,随后和前端开发人员会议沟通确认,发现有跨域报错,原来如此

检查发现是前端配错了回调地址😀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/907547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

充电便捷,新能源汽车移动充电服务如何预约充电

随着新能源汽车的普及&#xff0c;充电便捷性成为影响用户体验的关键因素之一。传统的固定充电桩受限于地理位置和数量&#xff0c;难以完全满足用户需求&#xff0c;而移动充电服务的出现&#xff0c;为车主提供了更加灵活的补能方式。通过手机APP、小程序或在线平台&#xff…

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

前引&#xff1a;在现代软件开发中&#xff0c;字符串处理是几乎所有程序的核心需求之一。无论是文本解析、网络通信&#xff0c;还是用户交互&#xff0c;高效且安全的字符串操作能力直接决定了代码的质量与可维护性。而C标准模板库&#xff08;Standard Template Library, ST…

Python爬虫实战:抓取百度15天天气预报数据

&#x1f310; 编程基础第一期《9-30》–使用python中的第三方模块requests&#xff0c;和三个内置模块(re、json、pprint)&#xff0c;实现百度地图的近15天天气信息抓取 记得安装 pip install requests&#x1f4d1; 项目介绍 网络爬虫是Python最受欢迎的应用场景之一&…

HTML常见事件详解:从入门到实战应用

前言 在Web开发中&#xff0c;事件是用户与网页交互的核心机制。HTML事件让我们能够响应用户的各种操作&#xff0c;如点击、鼠标移动、键盘输入等。掌握HTML事件是前端开发的基础技能之一&#xff0c;本文将深入探讨HTML中的常见事件类型及其实际应用。 HTML事件概览总结 H…

模具制造业数字化转型:精密模塑,以数字之力铸就制造基石

模具被誉为 “工业之母”&#xff0c;是制造业的重要基石&#xff0c;其精度直接决定了工业产品的质量与性能。在工业制造向高精度、智能化发展的当下&#xff0c;《模具制造业数字化转型&#xff1a;精密模塑&#xff0c;以数字之力铸就制造基石》这一主题&#xff0c;精准点明…

深度解读漏洞扫描:原理、类型与应用实践

在网络安全领域&#xff0c;漏洞就像隐藏在系统中的定时炸弹&#xff0c;随时可能被攻击者利用&#xff0c;导致数据泄露、服务瘫痪等严重后果。而漏洞扫描作为发现这些潜在威胁的 “侦察兵”&#xff0c;是保障网络安全的重要防线。本文将全面介绍漏洞扫描的相关知识&#xff…

[HNCTF 2022 Week1]silly_zip

下载附件 解压发现需要密码 用010打开看看&#xff0c;发现是伪加密 改成00点击保存 解压后得到图片 感觉图片看着怪怪的&#xff0c;修改一下高度看看有没有其他线索 把47改成78 最后得到flag

Facebook 的隐私保护措施是否足够?技术观点

在数字时代&#xff0c;隐私保护成为了公众关注的焦点&#xff0c;尤其是对于拥有数十亿用户的社交媒体巨头 Facebook 来说&#xff0c;其隐私保护措施的有效性更是备受瞩目。本文将从技术角度探讨 Facebook 的隐私保护措施是否足够。 数据收集与使用 Facebook 收集用户数据的…

cocosCreator 1.8 升级到 2.4

现在负责的一个运营中的商业项目&#xff0c;使用的是 cocosCreator1.8&#xff0c;之前没有做好设计&#xff0c;所以东西都是直接加载在内存中的&#xff0c;到了现在性能问题逐渐暴露出来&#xff0c;讨论之后想进行引擎升级&#xff0c;升级到cocosCreator 2.4。 官方的升…

ubuntu 制作 ssl 证书

安装 openssl sudo apt install openssl 生成 SSL 证书 # 生成私钥 (Private Key) openssl genrsa -out private.key 2048 在当前目录生成 private.key # 生成证书签名请求 (CSR - Certificate Signing Request) openssl req -new -key private.key -out certificate.csr -…

【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤

在Java开发的世界里&#xff0c;选择一个强大的集成开发环境&#xff08;IDE&#xff09;是迈向高效编程的第一步。而IntelliJ IDEA无疑是Java开发者中最受欢迎的选择之一。它以其强大的功能、智能的代码辅助和简洁的用户界面&#xff0c;帮助无数开发者快速构建和部署Java项目…

WEB3——什么是ABI

怎么获得ABI&#xff1f; 在编译完合约后&#xff0c;可以在左边下面点击复制ABI ABI&#xff08;Application Binary Interface&#xff0c;应用二进制接口&#xff09;是用来让前端或服务端 JavaScript 代码与智能合约进行交互的桥梁&#xff0c;它描述了合约的函数、事件和…

移动安全Android——客户端数据安全

本地文件权限配置 测试流程 &#xff08;1&#xff09;手机运行待测APP应用&#xff0c;adb执行命令找到APP包名 adb shell dumpsys activity top|findstr ACTIVITY &#xff08;2&#xff09;adb shell 进入设备&#xff0c;以Root权限进入/data/data/package包名目录下 c…

拉普拉斯噪声

1. 概念 拉普拉斯噪声是一种连续概率分布生成的随机噪声&#xff0c;其核心特点是符合拉普拉斯分布。这种噪声被特意添加到数据&#xff08;尤其是查询结果或统计量&#xff09;中&#xff0c;以实现差分隐私这一严格的隐私保护框架。 核心目的&#xff1a; 在保护数据集中的个…

django项目开启debug页面操作有数据操作记录

在项目的主文件中setting中配置 """ Django settings for ProjectPrictice project.Generated by django-admin startproject using Django 3.0.1.For more information on this file, see https://docs.djangoproject.com/en/3.0/topics/settings/For the ful…

【科研绘图系列】R语言绘制森林图(forest plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息介绍 本文介绍使用R语言绘制森林图(forest plot)的方法。首先加载必要的R包(grid、forestploter、openxlsx、stringr),导入并预处…

MySQL-8.0.42 主从延迟常见原因及解决方法

目录 1 查看从库延时方法 2 如何分析主从延迟 3 主从延迟的常见原因及解决方法 1 查看从库延时方法 mysql> show slave status \G *************************** 1. row *************************** Slave_IO_Running: Yes #两个yes说明主从复制正常 …

Kotlin 活动事件通讯跳转深度讲解

在 Android 开发的浩瀚海洋中,活动(Activity)间的事件通讯与跳转犹如构建复杂应用程序的桥梁与纽带,而 Kotlin 语言的加入,更是为这一过程注入了简洁、优雅与高效的活力。本文将深入剖析 Kotlin 开发中安卓活动事件通讯跳转的方方面面,从基础概念到高级技巧,从代码示例到…

[FreeRTOS- 野火] - - - 临界段

一、介绍 临界段最常出现在对一些全局变量进行操作的场景。 1.1 临界段的定义 临界段是指在多任务系统中&#xff0c;一段需要独占访问共享资源的代码。在这段代码执行期间&#xff0c;必须确保没有任何其他任务或中断可以访问或修改相同的共享资源。 临界段的主要目的是防…

Vad-R1:通过从感知到认知的思维链进行视频异常推理

文章目录 速览摘要1 引言2 相关工作视频异常检测与数据集视频多模态大语言模型具备推理能力的多模态大语言模型 3 方法&#xff1a;Vad-R13.1 从感知到认知的思维链&#xff08;Perception-to-Cognition Chain-of-Thought&#xff09;3.2 数据集&#xff1a;Vad-Reasoning3.3 A…