在某些情況下,需要對某些內容的訪問進行限制,在Nginx中也提供了這樣的限制措施,以下是幾種常見的限制措施:
1.訪問身份驗證
在Nginx的插件模塊中有一個模塊ngx_http_auth_basic_module可以要求用戶進行身份認證,默認情況下nginx已經安裝了這個模塊 。可通過命令./nginx -V查看是否有此模塊。
安裝后只需要進行以下步驟即可實現:
首先創建密鑰文件:
yum install -y httpd-tools htpasswd -bc /usr/nginx/conf/htpasswd.users username password
cat /usr/nginx/conf/htpasswd.users
配置nginx:
server { listen 80; server_name 192.168.1.1; auth_basic "Restricted Access"; auth_basic_user_file /usr/nginx/conf/htpasswd.users; location / { proxy_pass http://192.168.1.2:5601; } }
配置完成后重啟nginx服務即可。正常情況下會出現以下輸入框輸入設置的用戶名和密碼即可:
2.限制IP訪問
在nginx.conf中添加以下配置可實現全局限制,也可將此配置放到server中或location中,放到server中只針對站點進行限制,location中只針對匹配的url進行限制:
allow 192.168.1.1; #允許的IP
deny 192.168.1.2; deny all;
可添加多條allow或deny,deny all結尾表示除了上面allow的其他都禁止,deny all;deny 一定要加一個ip,否則直接跳轉到403,下面的規則將不起作用。
3.限制某些ip在同一時間段內的訪問次數
nginx可以通過HttpLimitReqModul和HttpLimitZoneModule配置來限制ip在同一時間段的訪問次數.
HttpLimitReqModul用來限制連單位時間內連接數的模塊,使用limit_req_zone和limit_req指令配合使用來達到限制。一旦並發連接超過指定數量,就會返回503錯誤。HttpLimitConnModul用來限制單個ip的並發連接數,使用limit_zone和limit_conn指令.
這兩個模塊的區別前一個是對一段時間內的連接數限制,后者是對同一時刻的連接數限制.
園子里有作者已經有過詳細介紹,請參考:https://www.cnblogs.com/aoniboy/p/4730354.html