小编Min*_*ius的帖子

代理尝试将数据上游发送到部分关闭的连接后生成的 HTTP 502 响应(重置数据包)

我收到代理服务器返回的零星 502 错误。在检查数据包流时,我看到 nginx 向源服务器已发送 [FIN,ACK] 的套接字发送 POST 请求。我想了解这是如何可能的以及任何潜在的解决方案。是源端的问题(发送响应后 5 秒后才发送 FIN、ACK)还是代理的问题?

以下是说明问题的 PCAP 屏幕截图: 在此输入图像描述

我的理解:

  • 来自源端的响应是 [PSH, ACK];
  • proxy 为通过该 [P.] 接收到的数据发送一个 [ACK](wireshark 确认下一个 [ACK] 是针对之前接收到的 [PSH-ACK]);
  • 7 秒过去了(注意 [FIN, ACK] 和我们的 POST ([PSH, ACK]) 之间的时间戳);
  • origin 发送 [FIN, ACK]。当发送第一个 [FIN, ACK] 时,原始 TCP 状态机应处于 FIN_WAIT_1 状态。
  • 然后我们发送另一个 POST,导致返回一个 [RST],因为源端并不期望 [PSH, ACK]。

问题:

  • 此案可能的解释是什么?
  • 如果代理(nginx)已经收到 FIN 并且实际上正在确认它,为什么它还要发送另一个请求!(POST [PSH, ACK] 数据包中的确认编号实际上是 [FIN,ACK] 的 SEQ_NUMBER + 1 - 因此它正在确认虚拟位 FIN。
  • 源端仅在 5 秒后而不是立即返回 [FIN,ACK] 的可能原因是什么?读取超时/空闲超时?

我不拥有原产地 - 所以无法捕获那里。

额外细节:

代理上的错误日志(nginx错误日志):

2017/04/17 …
Run Code Online (Sandbox Code Playgroud)

networking http nginx reverse-proxy

4
推荐指数
1
解决办法
6032
查看次数

在不同的网络服务器(nginx、apache、iis 等)中重写响应体的可能性

我正在对常用 Web 服务器之间的差异进行个人研究。当涉及到特定功能时,我正在努力寻找明确的答案,对我来说最重要的是:即时重写响应正文的能力。

场景:web服务器(apache、nginx、iis、varnish、haproxy)部署为反向代理或应用服务器代理(nginx-->passenger为例)。

问题:在哪些网络服务器中以及如何重写响应正文。关于此类操作的简便性和性能的评论或 2 也会有所帮助。

我的研究

Content rewritting:

Nginx: ngx_http_sub_module
Nginx: LUA body_filter: https://groups.google.com/forum/embed/#!topic/openresty-en/Gj-s_hARc84 
Apache: mod_substitute
Apache: starting from 2.3 LUA can be used as a scripting language (and the response body rewriting with it is possible)
IIS: does not seem top be possible?
Varnish: possible, but hacky: https://github.com/aivarsk/libvmod-rewrite 
HAproxy: not possible, although it might be possible with LUA in the future
Run Code Online (Sandbox Code Playgroud)

还有什么我忘记了吗?谢谢。

iis nginx varnish reverse-proxy apache-2.2

3
推荐指数
1
解决办法
2099
查看次数

TCP卸载网卡怎么导致TCP校验和无效?

一个 tcpdump pcap 导出并在另一台带有 wireshark 的机器上被调查显示出很多无效的 TCP 校验和消息。这是使用 TCP 卸载功能时已知并记录在案的现象:https : //wiki.wireshark.org/TCP_Checksum_Verification

唯一不清楚的是为什么校验和不正确?

TCP 校验和是在伪标头的帮助下在整个 TCP 段上计算的,并在校验和计算过程中使用全零的临时校验和值 ( http://www.tcpipguide.com/free/t_TCPChecksumCalculationandtheTCPPseudoHeader-2.htm#图_218)。然后丢弃伪标头。差异体现在哪里?

tcp tcpdump tcp-offload-engine

0
推荐指数
2
解决办法
7189
查看次数