Nginx 从多部分/表单数据中删除内容

2023-12-02

我有两个 Nodejs 应用程序位于 nginx 反向代理后面。这是我的 nginx 配置,

#main_api 
location / {
      proxy_pass http://localhost:3000;
    }

#chat_api
location /socket.io/ {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy false;
      proxy_pass http://localhost:3001/socket.io/;
      proxy_redirect off;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
....
//ssl stuffs

我可以发送带有 JSON 正文的普通 HTTP 请求。但是当我发送 multipart/formdata 时,nginx 会从我的请求正文中删除字段。我的请求包含几个文本字段和一个文件。如果我访问HTTPS我的 API url 版本,只有该文件会被 nginx 忽略,但是当HTTP版本被访问,文本字段也被忽略,我的POST请求被转换成GET要求。

这是我的 nginx 访问日志,

103.160.233.51 - - [28/May/2022:07:23:51 +0000] "POST /api/files/upload_dp HTTP/1.1" 500 26 "-" "PostmanRuntime/7.29.0"
103.160.233.51 - - [28/May/2022:07:24:04 +0000] "POST /api/files/upload_dp HTTP/1.1" 301 178 "-" "PostmanRuntime/7.29.0"
103.160.233.51 - - [28/May/2022:07:24:04 +0000] "GET /api/files/upload_dp HTTP/1.1" 401 43 "http://myapiurl.com/api/files/upload_dp" "PostmanRuntime/7.29.0"

并且nginx错误日志为空。

我缺少什么 nginx 配置选项?


您的后端返回 HTTP 500,然后返回 HTTP 301。根据 RFC 文档,301 并不要求浏览器在执行重定向时使用相同的 HTTP 方法。

如果您想强制浏览器使用相同的方法 - 您的后端应使用 HTTP 307 进行响应(仅较新的 nginX 版本支持)。

欲了解更多信息 - 阅读https://blog.codefarm.me/2021/09/24/http-redirect-3xx/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx 从多部分/表单数据中删除内容 的相关文章

随机推荐

  • 使用 std::unique_ptr/std::shared_ptr 确认线程安全

    我的应用程序有一个 IRC 模块 本质上是一个普通的客户端 由于这是高度线程化的 因此我面临插件检索的风险 例如 用户昵称 它当时有效 但解析器触发更新 更改所述昵称 一旦另一个线程再次执行 它就会处理指向现在无效内存的指针 因为不可能将
  • 如何将 SPListitem 从一个 SPList 复制到另一个 SPList

    我需要将项目从一个 SPList 复制到另一个 这是不起作用的代码 public void CopyList SPList src Copy items from source List to Destination List foreac
  • 使用 Google 地图 API 进行标记的路线

    因此 我正在使用 Google Maps API 目前我有一个自定义标记来突出显示该位置 如果可能的话 我想做的是能够单击它并让它弹出谷歌地图方向对话框 例如THIS 通常在谷歌地图上点击地名时会得到 目前 我刚刚将其设置为放大标记 但显然
  • 从 Windows 服务更新 ASP.Net 成员资格

    我正在为一家物业管理公司做一个项目 有存储所有租户和物业组合的后端系统 以及允许用户查看其套餐 服务请求等的前端网站 我需要编写一个 Windows 服务 从后端提取他们的信息并将其放入会员数据库中 我不知道如何配置服务以连接到会员提供商
  • Qt 嵌入应用程序内的屏幕旋转

    在我们的目标设备中 我们使用 qws 参数运行 QtE 应用程序 要旋转屏幕 我们指定 display Transformed rot90 作为应用程序参数 效果很好 但是 我们有一个在应用程序内旋转屏幕的功能 因此我们尝试 QScreen
  • 文字函数的隐式参数

    边读边玩 框架文档 我遇到了这个片段 def index Action implicit request gt session get connected map user gt Ok Hello user getOrElse Unauth
  • 如何以编程方式重新配置 uima ruta 分析引擎(更改参数值)?

    这是问题的延续 如何从 Maven 项目运行外部 ruta 脚本而不将脚本或其类型系统放在类路径中 请指导我以编程方式重新配置分析引擎 通过更改参数值 情况 您有一个 UIMA Ruta 分析引擎的正确 xml 描述符 并且您想要重新配置
  • 如何重置 VSTS 计数器?

    我们需要重置 VSTS 计数器 我没有看到任何方法可以通过用户界面来做到这一点 有一种方法可以直接调用重置构建计数器REST API 但为了做到这一点 您需要知道计数器 id 您应该能够通过调用找到它得到一个定义休息 API 不幸的是 无论
  • 波浪号的意义

    string path context Server MapPath Temp or string path context Server MapPath Temp 一样吗 我知道 代表根 但想知道两者之间的区别 folder and fo
  • 将 y 轴转换为百分比 ggplot

    我使用堆积条形图 带有 coord flip 来尝试比较对照组和治疗组在测试前和测试后的分布 这是我正在使用的几种技术之一 这是情节 这是代码 抱歉 没有数据集就无法重现 如果这是一个问题 我将制作一个可重现的数据集 因为我无法共享真实数据
  • 如何在关联类型中指定生命周期参数?

    我有这个特点和简单的结构 use std path Path PathBuf trait Foo type Item AsRef
  • WWDC 2019 - iOS13 2020 年 4 月要求

    In the WWDC 2019 视频让您的 iOS 13 UI 现代化 苹果提到了一个要求 即到 2020 年 4 月 所有应用程序都应 采用启动故事板 支持任意尺寸 支持分屏多任务 支持分屏多任务 的含义是否如中所述课程 258 为多个
  • 如何根据结果分组将pandas中的数据框划分为多个数据框?

    Date A Date B Date C Amount 0 09 01 2016 09 01 2016 01 01 1800 2405814 36 1 09 01 2016 09 01 2016 09 01 2016 11347445 71
  • 序列化 XmlDocument 并通过 HTTPWebRequest 发送

    我试图弄清楚如何正确序列化我的 XmlDocument 并通过 HTTPWebRequest 对象发送它 这是我到目前为止所拥有的 Stream requestStream HttpWebRequest request HttpWebReq
  • 通过指针枚举 NSString 字符

    如何通过从中提取每个 unichar 来枚举 NSString 我可以使用characterAtIndex 但这比通过递增unichar 慢 我在苹果的文档中没有看到任何不需要将字符串复制到第二个缓冲区的内容 像这样的东西将是理想的 for
  • 在java中监视目录和子目录的创建、修改和更改

    我已经编写了一些代码来检测目录 C java newfolder 中的更改 它运行良好 我已经在下面给出了 import java nio file import java util List public class DirectoryW
  • 如何使用友元函数在模板类之外重载运算符==?

    我正在尝试编写一个重载的模板类运算符 我知道如何在课堂上得到它 template
  • 从分层对象存储读取/写入到分层对象存储 - SharePoint 2007

    我创建了一个自定义计时器作业 需要一些配置才能运行 我正在尝试将配置另存为SPPersistedObject在分层对象存储中 分层对象存储保存在 SharePoint 配置数据库中 因此我在尝试使用SPWebApplication作为家长
  • 默认字符串排序顺序

    默认排序顺序是实现细节吗 或者如何选择默认比较器 这让我想起了建议 不要将哈希码存储在数据库中 下面的代码是否保证以相同的顺序对字符串进行排序 string randomStrings Hello There World The Secre
  • Nginx 从多部分/表单数据中删除内容

    我有两个 Nodejs 应用程序位于 nginx 反向代理后面 这是我的 nginx 配置 main api location proxy pass http localhost 3000 chat api location socket