当前位置: 首页 > news >正文

nginx用域名http://xx.com/aaa/代理一个网页http://ff.com但是请求资源时发生404

哎,还得是chatgpt,难道就没有人有这种使用场景吗?没查到一个配置是有效的。

  • 我:

    我配置了nginx反向代理,用域名http://xx.com/aaa/代理一个网页http://ff.com,
    但是请求资源时发生404,如何解决,我能够正确获取到dom

  • gpt-4-1106-preview:

    如果你已经成功配置了 Nginx 以使用 http://xx.com/aaa/ 代理到 http://ff.com,但在访问资源时遇到了 404 错误,可能的原因之一是资源的相对路径问题。当你使用子路径代理到另一个网站时,目标网站页面中的资源可能会因为路径不匹配而加载失败。

    例如,如果目标网站(http://ff.com)中有一张图片,其路径为 /images/pic.jpg,则该请求将在代理服务器上转换为 http://xx.com/aaa/images/pic.jpg。但是,如果 Nginx 配置中没有正确地重写资源的路径,资源请求会被发向错误的 URL,导致 404 错误。

    为了解决这个问题,你需要确保 Nginx 的配置能够正确处理路径重写。下面是一个基本的例子,展示如何为 Nginx 设置代理并重写 URL 路径:

      server {listen 80;server_name xx.com;location /aaa/ {proxy_pass http://ff.com/; # 确保末尾有斜杠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;# 重写路径:移除 `aaa`rewrite ^/aaa/(.*) /$1 break;# 如果需要,处理 HTML 内嵌资源的路径问题sub_filter 'src="/' 'src="/aaa/';sub_filter 'href="/' 'href="/aaa/';sub_filter_once off;}}
    

    在这个配置中,rewrite 指令用于从传入的请求 URL 中删除 /aaa/ 子路径,保持后端请求的正确性。sub_filter 指令用于处理返回的 HTML 内容,将资源的路径前缀修改为 /aaa/,使它们在反向代理环境中有效。请注意,这可能需要 Nginx 的 ngx_http_sub_module 模块支持。

    确保重写规则和替换操作符合你的实际需求,它们可能需要根据实际网站的结构进行调整。

    最后,不要忘记重新加载或重新启动 Nginx 以应用更新后的配置:

    sudo nginx -s reload
    # 或者
    sudo systemctl reload nginx
    

    一定要仔细检查网站的 HTML 和相关资源请求,确保所有的资源路径都能正确反映反向代理的结构。

    剩余的问题

    • 对于*.svg文件请求依然是404,不看图又不会死,直接不解决。

    • 对于api请求是404,哎懒得折腾了,直接把api请求单独重定向到一个同名路由成功访问,出现冲突了再说吧。
      像这样:

         location /api/ {proxy_pass http://127.0.0.1:8085/api/;}
      
http://www.lryc.cn/news/298625.html

相关文章:

  • NLP_词的向量表示Word2Vec 和 Embedding
  • python:xml.etree 生成思维导图 Freemind文件
  • Solidworks:从2D走向3D
  • 【开源】JAVA+Vue.js实现高校学院网站
  • 题解19-24
  • 基于图像掩膜和深度学习的花生豆分拣(附源码)
  • 【网络】:序列化和反序列化
  • AJ-Report 【开源的一个BI平台】
  • Matplotlib核心:掌握Figure与Axes
  • 问题:A注册会计师必须在期中实施实质性程序的情形是()。 #学习方法#其他
  • C#系列-C#EF框架返回单行记录(24)
  • 【PyTorch】张量(Tensor)的生成
  • 【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理
  • 矩阵在计算机图像处理中的应用
  • Java实现教学资源共享平台 JAVA+Vue+SpringBoot+MySQL
  • Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件
  • 161基于matlab的快速谱峭度方法
  • CTFshow-WEB入门-信息搜集
  • django密码管理器(创建项目)
  • Centos7之Oracle12c安装与远程连接配置
  • CVE-2022-25578 漏洞复现
  • Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)
  • 一、DataX简介
  • 直播app开发,技术驱动的实时互动新纪元
  • Apache POI的介绍以及使用示例
  • npm config set registry https://registry.npm.taobao.org 这个设置了默认的镜像源之后如何恢复默认的镜像源
  • 算法沉淀——位运算(leetcode真题剖析)
  • React18原理: 再聊Fiber架构下的时间分片
  • 【玩转408数据结构】线性表——线性表的顺序表示(顺序表)
  • 图像处理之《黑盒扰动的可逆噪声流鲁棒水印》论文阅读