Так что на самом деле я использую nginx для обратного прокси (и балансировки нагрузки) некоторых серверных API-интерфейсов с помощью nginx, и я использую директиву limit_req_zone
для ограничения максимального количества запросов на IP и URI.Никаких проблем с этим.
В конце концов нам может понадобиться уменьшить масштаб и добавить еще пару экземпляров nginx.Каждый экземпляр nginx использует «зону разделяемой памяти» для временного сохранения (в кеше, я полагаю) каждого запроса, чтобы он мог надлежащим образом проверить, проходит запрос или нет соответственно с limit_req_zone
, упомянутым выше.При этом, как nginx справляется с этим, если одновременно запущено несколько nginx?
Например:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
Это говорит nginx о разрешении только 1 запросав секунду с того же IP-адреса, но что если второй запрос (в течение той же секунды) поступит к другому экземпляру nginx?Как я понимаю, это пройдет, потому что они не разделяют общую память, где хранится кеш, я думаю.
Я пытался немного изучить это, но ничего не смог найти.Любая помощь будет признательна.