Nginx 代理配置导致浏览器应用网页页面加载失败的分析与解决

Nginx 代理配置导致应用页面加载失败的分析与解决

前期部署信息:

部署DM数据库DEM时,配置了nginx代理,conf配置内容如下:

    charset utf-8;
    client_max_body_size 128M;
    listen 4567;

    server_name 192.168.1.156;
    root /opt/h5/;
    index index.html;

    location /tomcat {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 隐藏 /tomcat 路径
        rewrite ^/tomcat(.*)$ $1 break;
    }

问题现象

我遇到了一个问题:直接访问http://192.168.1.156:8080/dem/是正常的,但是访问 http://192.168.1.156:4567/tomcat/dem/ 时,页面却无法正常显示,表现为一个不停转圈的加载状态,无法进入登录界面。

在这里插入图片描述
或者报错“获取系统属性失败!加密响应失败!”

分析原因

经过多次排查和测试,我发现问题主要出在 Nginx 的代理配置上,可能的原因包括以下几点:

  1. 资源路径不一致
    应用中的 JavaScript、CSS 等静态资源可能使用了相对路径或绝对路径。在代理过程中,如果 Nginx 没有正确映射这些路径,浏览器会无法加载资源,导致页面卡在加载状态。

  2. 路径重写配置问题
    我尝试使用 rewrite 指令隐藏代理路径(如 /tomcat),但与 proxy_pass 结合使用时,可能会导致请求 URL 被错误解析,后端应用接收到的路径与预期不符,从而引发加载失败。

  3. 代理转发未完全适配应用需求
    如果应用内部的 AJAX 请求或其他逻辑依赖特定的 URL 路径,而 Nginx 的代理配置没有正确处理这些请求,可能会导致功能异常。

处理方法

经过反复调整,我最终通过以下两种 Nginx 配置方案成功解决了问题:

方法一:精确代理到 /dem/ 路径

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 4567; # 监听 4567 端口,便于局域网访问
    server_name 192.168.1.156;
    root /opt/h5/;
    index index.html;

    location /dem/ {                                #修改了这一行
        proxy_pass http://127.0.0.1:8080/dem/;               #修改了这一行
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 尝试隐藏 /tomcat 路径(可选,未完全生效时可移除)
        rewrite ^/tomcat(.*)$ $1 break;
    }
}
  • 配置说明
    • 通过 location /dem/ 将请求直接代理到 http://127.0.0.1:8080/dem/,保持路径一致性。
    • 添加了基本的代理头信息(如 HostX-Real-IP 等),确保后端能正确识别请求来源。
    • rewrite 指令用于隐藏 /tomcat 路径,但测试发现它对最终成功访问并非必要,可根据需求保留或移除。

方法二:代理根路径到 Tomcat

server {
    listen 7890;
    server_name 192.168.1.156;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  • 配置说明
    • 将所有请求代理到 http://127.0.0.1:8080/,适用于 Tomcat 应用部署在根路径下的场景。
    • 这种方式简单直接,减少了路径匹配的复杂性,适合不需要额外路径前缀的情况。

结果

经过以上配置调整,我成功实现了目标:

  • 方法一:访问 http://192.168.1.156:4567/dem/,页面正常加载并跳转到登录界面。
  • 方法二:访问 http://192.168.1.156:7890/dem/,同样可以正常访问应用,页面加载和功能运行无异常。

两种方法都解决了页面加载失败的问题,具体选择取决于你的应用部署方式和访问需求。

总结

通过这次排查和解决,我总结了以下几点经验,供其他开发者参考:

  1. 保持路径一致性
    在配置 proxy_pass 时,确保前端请求的路径与后端应用的实际路径一致,避免因路径不匹配导致资源加载失败。

  2. 谨慎使用路径重写
    rewrite 虽然可以隐藏代理路径,但与 proxy_pass 结合使用时容易出错。如果不需要复杂的路径转换,建议直接使用简单代理。

  3. 调试技巧
    在排查类似问题时,可以通过浏览器开发者工具(F12)检查网络请求,查看资源加载是否失败,或查看 Nginx 的 error_log 日志定位问题。

希望这篇文章能帮助到遇到类似问题的朋友!如果有其他疑问,欢迎在评论区交流。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

交通安全知识竞赛主持稿串词

各位领导、在场的所有职工同志们,大家下午好! 行政房管部为了配合我厂开展的一系列安全生产宣传教育活动,普及安全知识,弘扬安全文化,结合本部门工作实际,今天在这里开展一项交通安全法律法规直至竞赛活动。 特意前来…

发展中的脑机接口:SSVEP特征提取技术

一、简介 脑机接口(BCI)是先进的系统,能够通过分析大脑信号与外部设备之间建立通信,帮助有障碍的人与环境互动。BCI通过分析大脑信号,提供了一种非侵入式、高效的方式,让人们与外部设备进行交流。BCI技术越…

Qt常用控件之旋钮QDial

旋钮QDial QDial 表示一个旋钮控件。 1. QDial属性 属性说明value当前数值。minimum最小值。maximum最大值。singleStep按下方向键时改变的步长。pageStep按下 pageUp/pageDown 的时候改变的步长。sliderPosition界面上旋钮显示的初始位置。tracking外观是否会跟踪数值变化&…

开源向量数据库Milvus简介

开源向量数据库Milvus简介 Milvus 是一个开源的、高性能、高扩展性的向量数据库,专门用于处理和检索高维向量数据。它适用于相似性搜索(Approximate Nearest Neighbor Search,ANN),特别适合**AI、推荐系统、计算机视觉…

html+js 轮播图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图示例</title><style>/* 基本样式…

ISP 常见流程

1.sensor输出&#xff1a;一般为raw-OBpedestal。加pedestal避免减OB出现负值&#xff0c;同时保证信号超过ADC最小电压阈值&#xff0c;使信号落在ADC正常工作范围。 2. pedestal correction&#xff1a;移除sensor加的基底&#xff0c;确保后续处理信号起点正确。 3. Linea…

BDF报告翻译简介后:关于A φ方法criterion引理1如何由范数导出内积

关于A φ方法criterion 引理1 如何由范数导出内积 在数学中&#xff0c;特别是在泛函分析中&#xff0c;给定一个范数&#xff0c;可以定义一个与之相关的内积。这个过程不是总是可能的&#xff0c;但当一个赋范向量空间是完备的且满足平行四边形恒等式时&#xff0c;可以导出…

FakeApp 技术浅析(二):生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称 GANs&#xff09;是 FakeApp 等深度伪造&#xff08;deepfake&#xff09;应用的核心技术。GANs 由 生成器&#xff08;Generator&#xff09; 和 判别器&#xff08;Discriminator&#xff09; 两个…

基于fast-whisper模型的语音识别工具的设计与实现

目录 摘 要 第1章 绪 论 1.1 论文研究主要内容 1.1.1模型类型选择 1.1.2开发语言的选择 1.2 国内外现状 第2章 关键技术介绍 2.1 关键性开发技术的介绍 2.1.1 Faster-Whisper数据模型 2.1.2 Django 第3章 系统分析 3.1 构架概述 3.1.1 功能构架 3.1.2 模块需求描述 3.2 系统开…

华为在不同发展时期的战略选择(节选)

华为在不同发展时期的战略选择&#xff08;节选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 来源&#xff1a;谢宁专著《华为战略管理法&#xff1a;DSTE实战体系》。本文有节选修改。 导言 从目前所取得的成就往回看&#xff0c;华为…

STM32定时器超声波测距实验手册

1. 实验目标 使用STM32 HAL库和定时器实现超声波测距功能。 当超声波模块前方障碍物距离 < 10cm 时&#xff0c;点亮板载LED。 2. 硬件准备 硬件模块说明STM32开发板STM32F103C8T6HC-SR04模块超声波测距模块杜邦线若干连接模块与开发板 3. 硬件连接 HC-SR04引脚STM32引脚…

软件测试之白盒测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 概念与定义 白盒测试&#xff1a;侧重于系统或部件内部机制的测试&#xff0c;类型分为分支测试&#xff08;判定节点测试&#xff09;、路径测试、语句测试…

【NTN 卫星通信】低轨卫星通信需要解决的关键问题

1 低轨卫星通信需要考虑的关键问题 3GPP在开始阶段对低轨卫星通信需要面对的关键问题对架构的影响进行了探讨&#xff0c;主要在协议23.737中&#xff0c;我们来看看有哪些内容吧。 2 关键问题讨论 2.1 大型卫星覆盖区域的移动性管理 PLMN的覆盖区域受到HPLMN母国监管机构的限…

DE2115实现4位全加器和3-8译码器(FPGA)

一、配置环境 1、Quartus 18.1安装教程 软件&#xff1a;Quartus版本&#xff1a;Quartus 18.1语言&#xff1a;英文大小&#xff1a;5.78G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09; 下载通道①百度网盘丨64位下载…

Distilling the Knowledge in a Neural Network(提炼神经网络中的知识)

蒸馏&#xff1a;把比较不纯净的水&#xff0c;通过加热&#xff0c;凝聚成水蒸气&#xff0c;然后再凝聚成纯净的蒸馏水。 知识蒸馏&#xff0c;也是把一个非常大的东西&#xff0c;蒸馏成一个小的&#xff0c;纯净的东西。 就是用大的教师网络&#xff0c;把知识传递给小的网…

【AI论文】MedVLM-R1:通过强化学习激励视觉语言模型(VLMs)的医疗推理能力

摘要&#xff1a;推理是推进医学影像分析的关键前沿领域&#xff0c;其中透明度和可信度对于赢得临床医生信任和获得监管批准起着核心作用。尽管医学视觉语言模型&#xff08;VLMs&#xff09;在放射学任务中展现出巨大潜力&#xff0c;但大多数现有VLM仅给出最终答案&#xff…

M4 Mac mini运行DeepSeek-R1模型

前言 最近DeepSeek大模型很火&#xff0c;实际工作中也有使用&#xff0c;很多人觉得需要很好的显卡才能跑起来&#xff0c;至少显存需要很高&#xff0c;但实际上一般的核显机器也能跑起来&#xff0c;只不过内存要求要大&#xff0c;对于个人而言&#xff0c;实际上Mac M芯片…

Chart.js 电商数据可视化实战:构建企业级销售仪表盘(附完整源码)

副标题:零配置开发多维度商业看板,掌握动态数据联动与性能调优 📝 文章摘要 本文通过 Chart.js 4.x 实现电商场景下的 多维度销售数据可视化看板,包含: ✅ 实时更新的柱状趋势图 ✅ 商品类目占比动态饼图 ✅ 企业级功能:自动刷新、响应式布局、内存管理 ✅ 生产环境最佳…

【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

高频面试题(含笔试高频算法整理)基本总结回顾5

目录 一、基本面试流程回顾 二、基本高频算法题展示 三、基本面试题总结回顾 &#xff08;一&#xff09;Java高频面试题整理 &#xff08;二&#xff09;JVM相关面试问题整理 &#xff08;三&#xff09;MySQL相关面试问题整理 &#xff08;四&#xff09;Redis相关面试…