当前位置: 首页 > news >正文

零基础新手小白快速了解掌握服务集群与自动化运维(十)Nginx模块--Nginx黑白名单

一、基于 IP 的黑白名单

  1. 白名单(只允许特定 IP 访问,仅允许)

    • 编辑 Nginx 配置文件

      • 通常在/etc/nginx/nginx.conf/etc/nginx/conf.d/下的虚拟主机配置文件中添加以下内容。

    • 使用 allow 和 deny 指令(Nginx 0.7.64 及以上版本)

server {listen       80;server_name  example.com;location / {allow 192.168.1.100;  # 允许这个IP访问deny all;             # 拒绝其他所有IP访问root   /usr/share/nginx/html;index  index.html index.htm;}
}

使用 geo 模块(推荐,更灵活)

  • http块内添加:

# 创建一个名为 $allowed 的 geo 变量块
geo $allowed {# 设置默认值为 0,表示不允许访问default 0;# 当客户端 IP 为 192.168.1.100 时,将 $allowed 变量的值设置为 1,表示允许该 IP 访问192.168.1.100 1;192.168.1.101 1;
}server {listen       80;server_name  example.com;location / {if ($allowed = 0) {return 403;}root   /usr/share/nginx/html;index  index.html index.htm;}
}

黑名单(禁止特定 IP 访问)

  • 使用 deny 指令

server {listen       80;server_name  example.com;location / {deny 192.168.1.100;  # 禁止这个IP访问root   /usr/share/nginx/html;index  index.html index.htm;}
}

使用 map 模块(更灵活)

  • http块内添加:

# 创建一个名为 $blocked 的 map 变量,其值根据客户端的 IP 地址($remote_addr)来确定
map $remote_addr $blocked {# 当客户端的 IP 地址为 192.168.1.100 时,将 $blocked 变量的值设置为 1"192.168.1.100" 1;# 对于其他所有未在上述规则中明确匹配的 IP 地址,将 $blocked 变量的值设置为 0default 0;
}server {listen       80;server_name  example.com;location / {if ($blocked = 1) {return 403;}root   /usr/share/nginx/html;index  index.html index.htm;}
}

二、基于用户代理(User - Agent)的黑白名单

  1. 白名单(只允许特定用户代理访问)

    • 使用 if 指令(不推荐,if 有性能问题,但简单场景可用)

server {listen       80;server_name  example.com;location / {if ($http_user_agent !~* "Chrome|Firefox") {return 403;}root   /usr/share/nginx/html;index  index.html index.htm;}
}

使用 map 模块(推荐)

  • http块内添加:

# 创建一个名为 $allowed_agent 的 map 变量,其值根据客户端的用户代理($http_user_agent)来确定
map $http_user_agent $allowed_agent {# 使用正则表达式匹配,如果用户代理字符串中包含 Chrome 或 Firefox(不区分大小写),则将 $allowed_agent 变量的值设置为 1"~*(Chrome|Firefox)" 1;# 对于其他所有未匹配上述正则表达式的用户代理,将 $allowed_agent 变量的值设置为 0default 0;
}server {listen       80;server_name  example.com;location / {if ($allowed_agent = 0) {return 403;}root   /usr/share/nginx/html;index  index.html index.htm;}
}

黑名单(禁止特定用户代理访问)

  • 使用 if 指令

server {listen       80;server_name  example.com;location / {if ($http_user_agent ~* "BadBot") {return 403;}root   /usr/share/nginx/html;index  index.html index.htm;}
}

使用 map 模块

  • http块内添加:

map $http_user_agent $blocked_agent {"~*BadBot" 1;default 0;
}server {listen       80;server_name  example.com;location / {if ($blocked_agent = 1) {return 403;}root   /usr/share/nginx/html;index  index.html index.htm;}
}

注意事项

  1. 配置文件位置

    • Nginx 的主配置文件通常在/etc/nginx/nginx.conf,虚拟主机配置文件可能在/etc/nginx/conf.d//etc/nginx/sites - available/等目录下。

  2. 模块支持

    • 确保 Nginx 编译时包含了需要的模块(如geomap模块等)。如果不确定,可以查看nginx -V的输出。

  3. 语法检查和重载

    • 修改配置文件后,可以使用nginx -t检查语法是否正确,然后使用nginx -s reload重新加载配置。

http://www.dtcms.com/a/424953.html

相关文章:

  • 泰安网站优化推广视频网站建设服务
  • 做网站的抬头标语怎么做外链吧发布seo
  • 网站不备案会怎么样wordpress默认用户名密码
  • 可以查授权的网站怎么做如何维护自己公司的网站
  • 大模型-扩散模型(Diffusion Model)原理讲解(1)
  • 个人网站能放什么内容织梦响应式茶叶网站
  • 顺德销售型网站建设最大的房产网站排名
  • 网站前端代码有哪些问题wordpress上传错误
  • 购物网站图片的放大怎么做的wordpress d8
  • 课程网站建设 碧辉腾乐如何手机做网站
  • 四川省城乡和住房建设厅网站浙江杰立建设集团网站
  • 手机和电脑网站分开做网站的空间是
  • 飞腾芯驱动4K屏:OBOO鸥柏查询机如何定义国产化交互技术新标准?
  • 单位网站建设管理工作总结wordpress信用卡支付
  • 如何发布一个自己的网站如何做视频网站流程图
  • 网站开发的策划书wordpress如何本地安装插件
  • 个人建站易语言开发安卓app
  • 达州市住房与城乡建设厅网站企业网络营销推广平台
  • 推广网站建设产品介绍一二三四视频社区5在线高清
  • 北京怎么建立网站asp网站管理系统源码
  • 门户网站建设汇报房地产信息网查询
  • Rohm和英飞凌将合作开发SiC封装
  • 购买网站空间的注意事项成都网站建设 四川冠辰
  • C/C++---语义移动(Move Semantics)与右值引用(Rvalue Reference)
  • 佛山定制建站公司推荐做代理需要自己的网站吗
  • 网站改了关键词让别人做网站需要注意什么
  • 汕头网站制作多少钱太原网站空间
  • wordpress微信站增城定制型网站建设
  • 北京市网站设计小程序源码怎么使用的
  • 建设手机网站经验分享坪山网站开发