Nginx 代理訪問一個 Web 界面時缺少內容

1. 資源路徑問題

Web 頁面中的靜態資源(如圖片、CSS、JavaScript 文件)可能使用了相對路徑或絕對路徑,而這些路徑在代理后無法正確加載。

解決方法:
  • 檢查資源路徑:打開瀏覽器的開發者工具(按?F12),查看哪些資源加載失敗。通常這些資源的 URL 可能是錯誤的。

  • 修正資源路徑

    • 如果資源路徑是相對的(如?./css/style.css),確保它們在代理后的上下文中仍然有效。

    • 如果資源路徑是絕對的(如?/css/style.css),需要在 Nginx 配置中正確處理路徑。

示例:

假設 Web 頁面的資源路徑是?/static/css/style.css,而你通過 Nginx 代理訪問的是?/login,那么資源路徑可能會被解析為?/login/static/css/style.css,導致加載失敗。

可以通過以下方式修正:

location /static/ {proxy_pass http://原始服務器IP:端口/static/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

2.?Host?頭問題

Nginx 默認會將?Host?頭設置為代理服務器的地址( 代理服務器IP),而不是原始服務器的地址(原始服務器IP:端口)。這可能導致后端服務器無法正確處理請求。

解決方法:

在 Nginx 配置中,顯式設置?Host?頭為原始服務器的地址:

location /login {proxy_pass http://原始服務器IP:端口;proxy_set_header Host $host;  # 或者直接設置為后端服務器的地址proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3. 靜態資源未正確代理

如果靜態資源(如圖片、CSS、JavaScript)沒有被正確代理到后端服務器,它們將無法加載。

解決方法:

確保 Nginx 配置中代理了所有必要的路徑。例如:

location / {proxy_pass http://原始服務器IP:端口;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}location /static/ {proxy_pass http://原始服務器IP:端口/static/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

4. 跨域問題

如果 Web 頁面中的某些資源是通過 JavaScript 動態加載的(例如通過 AJAX 請求),可能會遇到跨域問題。

解決方法:

在 Nginx 配置中添加跨域支持:

location / {proxy_pass http://原始服務器IP:端口;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 允許跨域add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}

5. 緩存問題

瀏覽器可能緩存了舊的資源文件,導致頁面顯示不正確。

解決方法:
  • 清除瀏覽器緩存,然后重新加載頁面。

  • 在 Nginx 配置中禁用緩存:

    location / {proxy_pass http://原始服務器IP:端口;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 禁用緩存add_header Cache-Control 'no-cache, no-store, must-revalidate';add_header Pragma 'no-cache';add_header Expires '0';
    }

總結

通過以下步驟排查和解決問題:

  1. 使用瀏覽器的開發者工具檢查哪些資源加載失敗。

  2. 確保 Nginx 正確代理了所有必要的路徑。

  3. 確保?Host?頭設置正確。

  4. 處理跨域問題(如果涉及)。

  5. 清除瀏覽器緩存或禁用緩存。

  6. 檢查后端服務器日志。

案例:

events {worker_connections 1024;
}http {upstream tomcat_cluster {server 本地IP:8080;server 本地IP:8081;}server {listen 80;server_name localhost;# 代理到本地 Tomcat 集群location / {proxy_pass http://tomcat_cluster;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# 代理到外部 URLlocation /login {proxy_pass http://原始服務器IP:端口/后綴;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73831.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GPU視頻編解碼:Jetson VPI+multimedia_api視頻編解碼入門(一)

目錄 一.Pipline與工具棧 二.硬件設備概況 三.GPU視頻編解碼框架 四.VPI編譯使用實例 五. jetson_multimedia_api編譯使用實例 一.Pipline與工具棧 二.硬件設備概況 三.GPU視頻編解碼框架 jetson設備目前不支持VPF框架,關于VPF的使用我在下節PC段使用X86進行安…

《深入理解AOP編程:從基礎概念到Spring實現》

AOP編程 AOP(Aspect Oriented Programing) 面向切面編程 Spring動態代理開發 以切面為基本單位的程序開發,通過切脈你間的彼此協同,相互調用,完成程序構建 切面切入點額外功能 OOP(Object Oriented Programing)面向對象編程 java 以對象為基本…

C# 零基礎入門篇(19.DateTime 使用指南)

## 一、概述 DateTime 是 C# 中用于表示日期和時間的結構,位于 System 命名空間中。它提供了豐富的屬性和方法,用于處理日期和時間的創建、格式化、比較和計算。 ## 二、創建 DateTime 對象 ### (一)使用默認構造函數 DateTime…

Docker 實踐與應用舉例

一、引言 在當今快速發展的信息技術領域,容器化技術已成為推動軟件開發、部署和運維變革的關鍵力量。Docker 作為容器化技術的領軍者,以其高效、便捷、可移植等特性,被廣泛應用于各種場景。它能夠將應用程序及其依賴項打包成一個獨立的容器&…

C++初階——類和對象(一)

C初階——類和對象(一) 一、面向過程和面向對象 1.面向過程 面向過程的程序設計(Procedure-Oriented Programming),簡稱POP,是一種是以程序執行流程為核心的編程范式。它是先分析出解決問題所需要的的步…

Skyeye 云智能制造辦公系統 VUE 版本 v3.15.13 發布

Skyeye 云智能制造,采用 Springboot winUI 的低代碼平臺、移動端采用 UNI-APP。包含 30 多個應用模塊、50 多種電子流程,CRM、PM、ERP、MES、ADM、EHR、筆記、知識庫、項目、門店、商城、財務、多班次考勤、薪資、招聘、云售后、論壇、公告、問卷、報表…

Obsidian Copilot:打造你的專屬 AI 筆記助手

Obsidian Copilot作為一款非常受歡迎的Obsidian插件,不僅極大地提升了用戶的筆記管理和信息檢索效率,還通過其多樣化的AI功能為用戶帶來了前所未有的便捷體驗。本文將詳細介紹Obsidian Copilot的核心特點、使用方法及個人體驗分享。 核心特點 Obsidian…

每日一題--計算機網絡

一、基礎概念類問題 1. TCP 和 UDP 的區別是什么? 回答示例: TCP:面向連接、可靠傳輸(通過三次握手建立連接,丟包重傳)、保證數據順序(如文件傳輸、網頁訪問)。 UDP:無…

使用 Spring 的 FactoryBean 創建和獲取 Bean 對象

在Spring框架中,FactoryBean接口提供了一種強大的機制來創建復雜的bean實例。本文將基于提供的代碼示例,詳細介紹如何通過FactoryBean創建bean對象,并展示如何獲取這些bean實例以及它們所屬的FactoryBean實例。 示例代碼類 定義 MyBean 接口…

制造業數字化轉型,汽車裝備制造企業數字化轉型案例,智能制造數字化傳統制造業數字化制造業數字化轉型案例

《某制造業企業信息化整體解決方案》PPT展示了一個汽車裝備企業的整體信息化解決方案,闡述了該企業的業務特點和現狀,主要包括按訂單生產、多級計劃和產品跟蹤等,分析了信息化建設的主要困難,如信息管理手工化、過程數據追溯困難、…

軟鏈接 使用筆記 linux命令 if判斷

目錄 1>0判斷怎么寫: 1. 使用 [ ] 進行數值比較: 2. 使用 (( )) 進行數學運算: 3. 使用 [[ ]](主要用于字符串比較,不推薦用于數學運算): 軟鏈接 使用筆記 1>0判斷怎么寫&#xff1a…

pycharm-python國際象棋遊戲代碼

嗯,用戶的問題是“pycharm寫關於python國際象棋遊戲代碼”,也就是要用PyCharm來寫一個Python的國際象棋游戲代碼。我需要先整理一下用戶提供的搜索結果,看看有什么相關的信息可以利用。 首先看搜索結果中的各個網頁內容。網頁1主要講的是象棋…

【Film】MovieAgent:自動化電影生成通過多智能體CoT規劃

論文概覽 自動化電影生成根據劇本概要和角色庫創建具有一 致角色、同步字幕和音頻的長篇視頻。它涉及自動化敘 事規劃、場景結構化, 和鏡頭構圖,復制現實世界電影制作的層次推理。 核心貢獻 提出MovieAgent,通過多智能體鏈式思維(CoT)規劃實現自動化電影生成。首次探索并…

數據結構——最短路(BFS,Dijkstra,Floyd)

完整版可以看我的最短路問題模版總結_稠密圖最短路-CSDN博客 考研數據結構只考BFS,Dijkstra和Floyd 下面代碼以Acwing模板題為例 BFS代碼 適用類型&#xff1a; 1.單源最短路徑 2.無權圖 3.不適用于帶權圖和負權回路圖 //Acwing走迷宮bfs #include<bits/stdc.h>usi…

ftp替代品,如何提升數據交換的安全性與高效性?

文件傳輸協議&#xff08;FTP&#xff09;是一個跨平臺的、簡單且易于實現的協議&#xff0c;用于在網絡上的服務器和客戶端之間傳輸文件&#xff0c;也是企業會經常選擇的一種傳輸方式。 業務場景一&#xff1a; 基于信息相關安全要求&#xff0c;醫院會采用防火墻、網閘等將…

單片機開發資源分析的實戰——以STM32G431RBT6為例子的單片機資源分析

目錄 第一點&#xff1a;為什么叫STM32G431RBT6 從資源手冊拿到我們的對STM32G431RBT6的資源描述 第二件事情&#xff0c;關心我們的GPIO引腳輸出 第三件事情&#xff1a;去找對應外設的說明部分 第一點&#xff1a;為什么叫STM32G431RBT6 對于命名規則不太熟悉的朋友看這里…

Android PC 要來了?Android 16 Beta3 出現 Enable desktop experience features 選項

在之前的 《Android 桌面窗口新功能推進》 我們就聊過&#xff0c;Google 就一直在努力改進 Android 的內置桌面模式&#xff0c;例如添加了適當的窗口標題、捕捉窗口的能力、懸停選項、窗口大小調整、最小化支持、app-to-web 等。 比如在搭載 Android 15 QPR 1 Beta 2 的 Pix…

IP關聯是什么?怎么避免?

在跨境電商的道路上&#xff0c;大家好&#xff01;今天想和大家聊一聊一個非常重要的話題&#xff0c;那就是IP關聯的問題。在商業活動中&#xff0c;了解如何避免IP關聯對保護我們寶貴的商鋪至關重要。接下來&#xff0c;我們將深入探討IP關聯的概念、影響及如何有效防止這一…

行為模式---狀態模式

概念 狀態模式是一種行為模式&#xff0c;用于在內部狀態改變的時候改變其行為。它的核心思想就是允許一個對象在其內部狀態改變的時候改變它的行為。狀態模式通過將對象的狀態封裝成獨立的類&#xff0c;并將其行為委托給當前的狀態對象&#xff0c;從而使得對象行為隨著狀態…

目標檢測中衡量模型速度和精度的指標:FPS和mAP

“FPS”和“mAP”分別衡量了模型的速度和精度。 FPS&#xff08;Frames Per Second&#xff09; 定義&#xff1a;FPS是“每秒傳輸幀數”的縮寫&#xff0c;用于衡量計算機視覺系統&#xff08;如目標檢測、圖像識別等&#xff09;的實時性能。它表示系統每秒鐘能夠處理的圖像…