经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Nginx » 查看文章
nginx设置目录白名单、ip白名单的实现方法
来源:jb51  时间:2019/8/30 11:45:17  对本文有异议

1.设置目录白名单:对指定请求路径不设置限制,如对请求路径为api目录下的请求不做限制,则可写为

  1. server{
  2. location /app {
  3. proxy_pass http://192.168.1.111:8095/app;
  4.  
  5. limit_conn conn 20;
  6.  
  7. limit_rate 500k;
  8.  
  9. limit_req zone=foo burst=5 nodelay;
  10. }
  11. location /app/api {
  12. proxy_pass http://192.168.1.111:8095/app/api
  13. }
  14. }
  15. # 因nginx会优先进行精准匹配,所以以上写法即接触了对api目录下属路径的限制

2.设置ip白名单,需用到nginx geo 与 nginx map

在没有人为删除的情况下(--without-http_geo_module或--without-http_map_module),nginx默认加载了ngx-http-geo-module和ngx-http-map-module相关内容;

ngx-http-geo-module可以用来创建变量,变量值依赖于客户端 ip 地址;

ngx-http-map-module可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;

  1. Nginx geo 格式说明
  2. Syntax ( 语法格式 ): geo [$address] $variable { ... }
  3. Default ( 默认 ): -
  4. Content ( 配置段位 ): http
  5. Nginx map 格式说明
  6. Syntax ( 语法格式 ): map String $variable { ... }
  7. Default ( 默认 ):-
  8. Content ( 配置段位 ): http
  9. 白名单配置示例
  10. http{
  11. # ... 其他配置内容
  12. #定义白名单ip列表变量
  13. geo $whiteiplist {
  14. default 1 ;
  15. 127.0.0.1/32 0;
  16. 64.223.160.0/19 0;
  17. }
  18. #使用map指令映射将白名单列表中客户端请求ip为空串
  19. map $whiteiplist $limit{
  20. 1 $binary_remote_addr ;
  21. 0 "";
  22. }
  23. #配置请求限制内容
  24. limit_conn_zone $limit zone=conn:10m;
  25. limit_req_zone $limit zone=allips:10m rate=20r/s;
  26. server{
  27. location /yourApplicationName {
  28. proxy_pass http://192.168.1.111:8095/app;
  29. limit_conn conn 50;
  30. limit_rate 500k;
  31. limit_req zone=allips burst=5 nodelay;
  32. }
  33. }
  34. }
  35. 白名单配置可用于对合作客户,搜索引擎等请求过滤限制
  36. #(特殊情况处理)
  37. #如果想仅限制指定的请求,如:只限制Post请求,则:
  38. http{
  39. # 其他请求..
  40. #请求地址map映射
  41. map $request_method $limit {
  42. default "";
  43. POST $binary_remote_addr;
  44. }
  45. #限制定义
  46. limit_req_zone $limit zone=reqlimit:20m rate=10r/s;
  47. server{
  48. ... #与普通限制一致
  49. }
  50. }
  51. #在此基础上,想进行指定方法的白名单限制处理,则:
  52. http{
  53. #...
  54. #定义白名单列表
  55. map $whiteiplist $limitips{
  56. 1 $binary_remote_addr;
  57. 0 "";
  58. }
  59. #基于白名单列表,定义指定方法请求限制
  60. map $request_method $limit {
  61. default "";
  62. # POST $binary_remote_addr;
  63. POST $limitips;
  64. }
  65. #对请求进行引用
  66. limit_req_zone $limit zone=reqlimit:20m rate=10r/s;
  67. #在server中进行引用
  68. server{
  69. #... 与普通限制相同
  70. }
  71. }

以上这篇nginx设置目录白名单、ip白名单的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号