在某些情况下,需要对某些内容的访问进行限制,在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 ;
  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

最新文章

  1. ASP.NET MVC异常处理
  2. 一、HTML和CSS基础--HTML+CSS基础课程--第5部分
  3. java抛出异常是怎么回事?
  4. Android使用ZXing生成带图片的二维码
  5. Spring注解和配置方式
  6. 程序语言的奥妙:算法解读 ——读书笔记
  7. AxWindowsMediaPlayer创建、添加播放列表(C#)
  8. silverlight visifire控件图表制作——silverlight 后台方法画图
  9. script 两则
  10. Linux Ubuntu从零开始部署web环境及项目 -----快捷键设置(四)
  11. 出现Unreachable code问题的原因
  12. Django报错:OSError: raw write() returned invalid length 4 (should have been between 0 and 2)
  13. Esptouch移植xamarin记要
  14. winform datagridview在添加全选checkbox时提示:不能设置 selected 或 selected 既不是表 Table 的 DataColumn 也不是 DataRelation。
  15. Spark面试题
  16. python网络编程初识
  17. 前序遍历and中序遍历and后序遍历
  18. Jmeter笔记:响应断言详解
  19. HDU - 4454: Stealing a Cake (圆上三分)
  20. 【jdk】使用wget下载jdk8

热门文章

  1. 010 有顺序的Map的实现类:TreeMap和LinkedHashMap
  2. (一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装
  3. SpringBoot Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
  4. 如何在外部终止一个pengding的promise对象
  5. thinkphp发送邮件需要开启什么设置
  6. dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全
  7. MySQL Block Nested Loop and Batched Key Access Joins(块嵌套循环和批量Key访问连接)
  8. CCF系列之数位之和(201512-1)
  9. python 与rabbitmq
  10. 查看 Apache并发请求数及其TCP连接状态【转】