Nginx:有没有办法对来自特定 IP 地址的请求进行优先排序?

Nginx:有没有办法对来自特定 IP 地址的请求进行优先排序?

我们有一个公共网站,该网站还为内部系统(在专用 IP 地址上)提供请求。当网站变得繁忙并且服务器负载增加时,所有请求都会变慢。这对于公共网站来说是可以接受的,但对于内部系统来说则不可接受。

在 Nginx(或 Debian Linux)中,有没有办法对请求进行优先级排序,以便内部系统请求获得优先权?

请不要建议增加服务器大小、缓存或类似无用的建议。

以供参考:

  • Debian Squeeze
  • Nginx
  • PHP-FPM

答案1

简单的回答:不。

长答案:集群是你的朋友。很明显,你网站所在的服务器不足以承担你施加的负载。

答案2

您无法确定优先级,但您可以限制外部请求并允许所有内部请求或来自某些 IP 的请求,也许使用 limit_req 和代理传递,但就像 Nathan 说的,建立集群是简单的方法。

答案3

只需稍加努力,就可以通过固定资源来“确定优先级”。

  1. 启动 2 个独立nginx实例
  2. 用于CPUAffinity将一些 CPU 固定到每个 CPU 上(例如,90% 的 CPU 为公共,10% 为私有)。

这样,您可以确保始终为特定进程(这里是特定nginx进程)保留/优先分配某些资源。

https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Scheduling

相关内容