nginx 访问日志不指示某些条目的 GET 或 POST

问题描述 投票:0回答:1

我在 access.log 中获取日志条目,但没有 GET 或 POST 指示。

例如:

<ip_addr> - - [27/Jan/2024:07:06:39 +0000] "\x03\x00\x00/*<snip>Cookie: mstshash=Administr" 400 166 "-" "-"

我一直在尝试使用 Python 重新创建这些请求。当我这样做时,我使用的测试系统会报告不同的日志条目:

<ip_addr> - - [02/Feb/2024:00:03:16 +0000] "POST / HTTP/1.1" 301 178 "-" "python-requests/2.31.0"
  • 我将日志条目从“\x03...”转换为名为 url 的字节数组
  • 我假设它是一个 POST,所以我使用 requests.post(svrname, data=url)
  • requests.get() 不会让我发送这些 bytearray()

我尝试从日志条目发送字符串而不转换为字节数组。 这不会复制我在生产系统中看到的相同日志条目

<ip_addr> - - [02/Feb/2024:00:20:37 +0000] "GET /%5Cx03%5Cx00%5Cx00<snip>Cookie:%20mstshash=Administr HTTP/1.1" 502 190 "-" "python-requests/2.31.0"

即它显示为“GET”,并且日志条目的其余部分也不匹配。

接下来要尝试什么有什么想法吗?

nginx python-requests
1个回答
0
投票

这些请求是通过套接字发送的原始数据。内容未按照 HTTP 格式化,因此 nginx 报告内容并将状态码设置为 400。

我能够用 python 复制这些。

我在 serverfault 中创建了另一个问题,看看是否有合适的方法来处理它们,除了让 nginx 发出 400 状态代码之外。

[https://serverfault.com/questions/1152890/nginx-config-for-binary-requests-on-port-80-or-443]

© www.soinside.com 2019 - 2024. All rights reserved.