【问题标题】:How to set the maximum mss in nginx configuration file如何在 nginx 配置文件中设置最大 mss
【发布时间】:2018-09-18 13:41:59
【问题描述】:

我正在使用 nginx 作为代理,我想知道如何在 nginx 配置中调整 mss 大小的最大大小。我还没有找到任何相关的配置选项。有什么想法吗?

【问题讨论】:

  • 那不是应用设置,是TCP(传输层)设置,是基于MTU的。
  • hmm ok thx 响应,但是选项推迟输出做什么?

标签: nginx networking tcp proxy network-programming


【解决方案1】:

我认为您指的是TCP_MAXSEG TCP option in Linux - 它设置传出 TCP 数据包的最大段大小。有一个patch submitted to the Nginx mail list 可以添加该功能,但似乎没有被接受。所以有效限制 MSS 的唯一方法是在 Nginx 连接的网络接口上设置 MTU。这是因为 MSS 总是小于接口 MTU。但这会影响绑定到该接口的所有进程。例如将 eth0 MTU 更改为 1492:

sudo ip link set eth0 mtu 1492

正如您在评论中提到的那样,Nginx postpone_output 选项确实与 MSS 相关 - 因为它应该设置 MSS - 尽管它默认为 1460(这是 IPv4 的常见 MSS,但不适用于 IPv6)。但是正如@Ron 在 cmets 中提到的那样,MSS 不能直接在应用程序级别设置,因为它是在每个连接的 TCP 级别协商的(因此它可以更改) - 这可以通过Path MTU discovery 执行,或者更常见的是这些天由 MSS 钳制(其中网络实体更改 SYN 和 SYNACK 数据包的 TCP 标头中的 MSS TCP 选项)。

【讨论】:

  • 对。用 PMTUD 正确设置 MTU,让 TCP 做它的事。搞乱 MSS 会带来无穷无尽的麻烦。
猜你喜欢
  • 2015-03-07
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2017-02-13
相关资源
最近更新 更多