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
繁體地址,請注明出處:http://hk.pswp.cn/news/907547.shtml
英文地址,請注明出處:http://en.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…