Моя установка такова:
UFW на сервере 2 и сервере 3 блокирует определенные запросы, поступающие с сервера 1 (nginx), и отображается в журнале ошибок nginx как «истекло время ожидания восходящего потока». Трафик между nginx и uwsgi-сервером находится в частной сети.
Это настройка UFW на серверах uwsgi:
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 в системном журнале:
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
Если я отключу UFW на серверах Uwsgi, таймауты в nginx прекратятся. На данный момент тайм-ауты / блоки - это в основном частые вызовы AJAX (каждые 2 минуты), но не исключительно.
Верно, я обнаружил, что UFW блокирует НЕВЕРНЫЕ пакеты (я полагаю, неправильная контрольная сумма), поступающие с сервера Nginx. Понятия не имею, почему это происходит. Я решил это, удалив правило из before.rules в UFW, которое отбрасывает недопустимые пакеты. Сайт снова работает быстро.