雷池社区版7.1新版本自定义NGINX配置分析

简单介绍雷池,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。

雷池通过阻断流向 Web 服务的恶意 HTTP 流量来保护 Web 服务。雷池作为反向代理接入网络,通过在 Web 服务前部署雷池,可在 Web 服务和互联网之间设置一道屏障。

雷池社区版最近发布了7.1版本

image.png

有一个重大功能:站点详情新增 “自定义 NGINX 配置”,支持在站点配置的 location 块中添加自定义的指令 而且当前功能所有人都可以使用,属于社区版也可以用的功能 在社区内引起了大家的肯定

问题就来了该如何使用当前功能 首先连理解,什么是location块 ?

○ location块是 Nginx 配置文件中的一个重要部分,用于定义基于请求的 URI(统一资源标识符)来匹配请求,并为匹配到的请求应用特定的配置。例如,当客户端请求http://example.com/api/users时,Nginx 会根据location块的配置来决定如何处理这个请求,包括但不限于返回静态文件、反向代理到后端服务器或者执行其他特定的操作。

在location块中都支持哪些指令呢?

NGINX Location 相关指令教程

在 NGINX 的 location 块中,可以添加许多指令来控制请求的处理方式。以下是主要的 location 块指令的完整列表及其用途。

基本指令

  1. proxy_pass:用于将请求转发到后端服务器,常见于反向代理场景。

    location /api/ {
       proxy_pass http://backend_server;
    }
    
  2. rootalias:用于指定静态资源目录。

    • root:基于请求路径的根路径指定目录。
    • alias:直接将请求路径映射到指定目录。

      location /images/ {
      root /var/www;
      }
         
      location /static/ {
      alias /var/www/static/;
      }
      
  3. try_files:在多个路径中查找文件,常用于处理文件存在检查。

    location / {
       try_files $uri $uri/ /index.html;
    }
    
  4. rewrite:用于重写 URL,常用于重定向。

    location /old-path/ {
       rewrite ^/old-path/(.*)$ /new-path/$1 permanent;
    }
    
  5. return:直接返回指定的状态码或内容。

    location /not-found {
       return 404 "Page not found";
    }
    

缓存与头部控制

  1. expires:设置响应缓存的过期时间,适用于静态资源。

    location ~* \.(jpg|jpeg|png|gif|css|js)$ {
       expires 30d;
    }
    
  2. add_header:向响应添加自定义 HTTP 头部。

    location / {
       add_header X-Frame-Options "DENY";
    }
    

日志控制

  1. access_log:指定该 location 的访问日志位置。

    location /admin/ {
       access_log /var/log/nginx/admin_access.log;
    }
    
  2. error_log:指定该 location 的错误日志位置和级别。

    location /admin/ {
       error_log /var/log/nginx/admin_error.log warn;
    }
    

连接和请求限制

  1. limit_conn:限制同一 IP 地址的并发连接数。

    limit_conn_zone $binary_remote_addr zone=addr:10m;
        
    location /download/ {
        limit_conn addr 1;
    }
    
  2. limit_req:限制请求的频率。

    limit_req_zone $binary_remote_addr zone=req_zone:10m rate=5r/s;
        
    location /api/ {
        limit_req zone=req_zone burst=10 nodelay;
    }
    

安全与权限控制

  1. auth_basic:为指定路径添加基本认证。

    location /secure/ {
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
    
  2. denyallow:设置 IP 地址的访问权限控制。

    location /admin/ {
        allow 192.168.1.0/24;
        deny all;
    }
    

缓存优化

  1. proxy_cache:配置反向代理的缓存。

    location / {
        proxy_cache my_cache;
        proxy_cache_key $scheme$proxy_host$request_uri;
    }
    
  2. proxy_cache_valid:定义缓存的有效时间。

    location / {
        proxy_cache_valid 200 10m;
    }
    

压缩

  1. gzip:启用 GZIP 压缩,减少传输数据量。

    location / {
        gzip on;
        gzip_types text/plain text/css application/json application/javascript;
    }
    

反向代理优化

  1. proxy_set_header:向后端服务器传递特定的请求头。

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
  2. proxy_buffering:启用或禁用缓冲响应。

    location / {
        proxy_buffering on;
    }
    
  3. proxy_read_timeout:设置从后端服务器读取响应的超时时间。

    location / {
        proxy_read_timeout 60s;
    }
    

其他指令

  1. internal:将 location 块设置为内部使用,不允许外部访问。

    location /internal/ {
        internal;
        proxy_pass http://internal_server;
    }
    
  2. index:指定访问目录时的默认文件。

    location / {
        index index.html index.htm;
    }
    
  3. autoindex:启用目录列表显示,适用于文件目录浏览。

    location /files/ {
        autoindex on;
    }
    
  4. stub_status:显示 NGINX 的当前状态,适用于监控。

    location /nginx_status {
        stub_status on;
    }
    

由于都是nginx相关的资料,就不在当前文档专门教程,有需要可以根据上文进行搜索与学习

注意的是,配置可能会改坏,谨慎在业务环境进行测试

上一篇:dns服务部署


下一篇:完成程序《大奖赛评分B》-代码: