我们使用 nginx 将任何 http 请求重定向到 https 连接,因此尽管用户建立了 http 连接,nginx 也会重定向到 https 连接。
这里 nginx 是否有每秒只能处理“n”次重定向的限制。因为我们的应用程序可以被其他系统访问,并且它们会故意始终发出 http 请求。因此 nginx 必须将所有 http 请求重定向到 https,但它无法一次处理许多请求。
但是如果我们发出 https 请求,它每秒能够处理大量请求,因为它不需要任何重定向。以下是我们的配置
server {
listen 6000; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name someDomain.com;
rewrite ^ https://$server_name$request_uri? ;
#root /usr/share/nginx/www;
index index.html index.htm;
}
答案1
您需要使用限制请求数指示。
http
{
limit_req_zone $binary_remote_addr zone=zonename:100m rate=25r/s;
server
{
limit_req zone=zonename burst=5;
$binary_remote_addr
限制每个 IP每秒 25 个请求rate=25r/s
您可以添加nodelay
以limit_req
使其在达到限制时立即响应 503。