我在我的一台服务器上配置了Nginx和Apache. Nginx服务器在端口81上侦听端口80和Apache.Nginx用作反向代理.在Nginx中,我配置了TCP Fast Open:
server {
listen 107.6.155.74 fastopen=50;
server_name servtest.com www.servtest.com;
服务器本身也启用了TCP Fast Open:
root@server:~/projects/Nginx# cat /proc/sys/net/ipv4/tcp_fastopen
3
为了测试这是否有效,我在运行Ubuntu的PC上配置Chrome以使用TCP Fast Open(chrome:// flags页面).客户端上的tcp_fastopen设置设置为1.
在服务器上,我使用以下grep来查明是否使用了TCP Fast Open:
grep '^TcpExt:' /proc/net/netstat | cut -d ' ' -f 87-92 | column -t
TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail
0 2 2 0 0 0
我相信TCPFastOpenActive和/或TCPFastOpenPassive计数器不应该是“0”如果这工作.任何想法如何实际找出是否使用TCP Fast Open并按预期工作?如果我需要提供更多信息,请告诉我.
最佳答案
我在https://github.com/yuryu/tfoecho使用TCP快速开放测试代码完成了一些测试
原文链接:https://www.f2er.com/nginx/435057.html使用测试代码时,我的计数TCPFastOpenPassive会上升.
$grep '^TcpExt:' /proc/net/netstat | cut -d ' ' -f 87-92 | column -t
TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenActiveFail TCPFastOpenPassive
1000 56217 1316 0 0 2041
所以我认为你的分析方法是正确的.
运行wireshark,您可以清楚地看到TCP选项下的Fast Open Cookie.
我使用Chromium和Nginx测试了相同的一对机器.
铬版本:
Version 55.0.2883.75 built on Debian stretch/sid,running on Debian stretch/sid (64-bit)
wireshark痕迹中没有快速打开的cookie.即使在Chromium中启用了快速打开选项.所以我怀疑问题在于Chromium.