nginx限制redirect

我们使用nginx将任何http请求redirect到https连接,所以虽然用户使得http连接nginx会redirect到https连接。

在这里nginx有任何限制,只能处理每秒'n'重新方向。 因为我们的应用程序可以被其他系统访问,并且他们总是有意地发出http请求。 所以nginx必须将所有http请求redirect到https,但是它一次不能处理很多请求。

但是,如果我们发出https请求,则它不需要任何redirect就可以处理每秒多次的请求。 以下是我们的configuration

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; } 

您需要使用limit_req指令。

 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响应。