我的设置是这样的:
- 服务器 1 (192.168.1.1) - nginx (负载平衡) - Ubuntu 12.04 LTS
- 服务器 2 - uwsgi - Debian 7.1
- 服务器 3 - uwsgi - Debian 7.1
服务器 2 和服务器 3 上的 UFW 阻止了来自服务器 1 (nginx) 的某些请求,并在 nginx 错误日志中显示为“上游超时”。nginx 和 uwsgi 服务器之间的流量全部在专用网络上。
这是 uwsgi 服务器上的 UFW 设置:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
Anywhere on eth1 ALLOW IN Anywhere
Anywhere ALLOW IN 192.168.1.1
Anywhere (v6) on eth1 ALLOW IN Anywhere (v6)
系统日志中的 UFW 块示例:
8 月 20 日 13:56:16 内核:[1028623.806318] [UFW BLOCK] IN=eth1 OUT= MAC=68:05:ca:17:c9:fb:68:05:ca:17:ca:0e:08:00 SRC=192.168.1.1 DST=192.168.1.103 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=54877 DF PROTO=TCP SPT=41652 DPT=8000 WINDOW=14600 RES=0x00 SYN URGP=0
如果我在 Uwsgi 服务器上禁用 UFW,nginx 中的超时就会停止。目前,超时/阻止主要是频繁的 AJAX 调用(每 2 分钟一次),但并非全部。
答案1
是的,我发现 UFW 阻止了来自 Nginx 服务器的无效数据包(我认为是错误的校验和)。不知道为什么会这样。我通过从 UFW 中的 before.rules 中删除丢弃无效数据包的规则解决了这个问题。网站再次快速运行。