在Nginx中,可以通过一系列配置实现安全管控,包括防止信息暴露、限制访问、防止DDoS攻击、防止爬虫抓取以及防非法引用。以下是一些建议和配置示例:

  1. 防止信息暴露

    • 禁止目录索引:防止Nginx在无默认文档时列出目录内容。

      location / {
          autoindex off; # 禁止目录索引
      }
      
    • 删除服务器标识:防止泄露Nginx版本等信息。

      server_tokens off; # 在http{}块中隐藏服务器版本号
      
  2. 限制访问

    • IP白名单或黑名单

      # 黑名单
      deny 192.168.1.0/24; # 拒绝来自该IP段的所有请求
      allow all; # 允许其他IP访问
      
      # 白名单
      allow 192.168.1.0/24; # 允许来自该IP段的所有请求
      deny all; # 拒绝其他IP访问
      
    • 限制特定URL的访问

      location /secret {
          auth_basic "Restricted Area";
          auth_basic_user_file /etc/nginx/.htpasswd; # 使用基本认证
      }
      
  3. 防止DDoS攻击

    • 限制请求速率

      limit_req_zone $binary_remote_addr zone=req_limit:10m rate=1r/s; # 创建限速区
      location / {
          limit_req zone=req_limit burst=5; # 每秒1个请求,允许突发5个
      }
      
    • 限制并发连接数

      limit_conn_zone $binary_remote_addr zone=conn_limit:10m; # 创建连接数限制区
      server {
          location / {
              limit_conn conn_limit 10; # 单个IP最大并发连接数为10
          }
      }
      
  4. 防止爬虫抓取

    • Robots.txt:在服务器根目录下放置robots.txt文件,指示搜索引擎爬虫哪些页面不应被抓取。
    • User Agent过滤
      if ($http_user_agent ~* (bot|spider|crawl) ) { 
          return 403; # 如果UA包含bot、spider或crawl等关键字,返回403 Forbidden
      }
      
  5. 防非法引用(防盗链):

    • Referer检查
      location ~ \.(jpg|jpeg|png|gif)$ {
          valid_referers none blocked yourdomain.com *.yourdomain.com;
          if ($invalid_referer) {
              return 403; # 如果Referer不在允许范围内,返回403 Forbidden
          }
      }
      

以上仅为基本示例,实际部署时需根据具体情况调整和完善配置。同时,全面的安全防护还需要结合防火墙、入侵检测系统等其他安全措施共同实现。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐