雷池社区版7.1新版本自定义NGINX配置分析
简单介绍雷池,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。
雷池通过阻断流向 Web 服务的恶意 HTTP 流量来保护 Web 服务。雷池作为反向代理接入网络,通过在 Web 服务前部署雷池,可在 Web 服务和互联网之间设置一道屏障。
雷池社区版最近发布了7.1版本
有一个重大功能:站点详情新增 “自定义 NGINX 配置”,支持在站点配置的 location 块中添加自定义的指令 而且当前功能所有人都可以使用,属于社区版也可以用的功能 在社区内引起了大家的肯定
问题就来了该如何使用当前功能 首先连理解,什么是location块 ?
○ location块是 Nginx 配置文件中的一个重要部分,用于定义基于请求的 URI(统一资源标识符)来匹配请求,并为匹配到的请求应用特定的配置。例如,当客户端请求http://example.com/api/users时,Nginx 会根据location块的配置来决定如何处理这个请求,包括但不限于返回静态文件、反向代理到后端服务器或者执行其他特定的操作。
在location块中都支持哪些指令呢?
NGINX Location 相关指令教程
在 NGINX 的 location
块中,可以添加许多指令来控制请求的处理方式。以下是主要的 location
块指令的完整列表及其用途。
基本指令
proxy_pass
:用于将请求转发到后端服务器,常见于反向代理场景。location /api/ { proxy_pass http://backend_server; }
root
和alias
:用于指定静态资源目录。root
:基于请求路径的根路径指定目录。alias
:直接将请求路径映射到指定目录。location /images/ { root /var/www; } location /static/ { alias /var/www/static/; }
try_files
:在多个路径中查找文件,常用于处理文件存在检查。location / { try_files $uri $uri/ /index.html; }
rewrite
:用于重写 URL,常用于重定向。location /old-path/ { rewrite ^/old-path/(.*)$ /new-path/$1 permanent; }
return
:直接返回指定的状态码或内容。location /not-found { return 404 "Page not found"; }
缓存与头部控制
expires
:设置响应缓存的过期时间,适用于静态资源。location ~* \.(jpg|jpeg|png|gif|css|js)$ { expires 30d; }
add_header
:向响应添加自定义 HTTP 头部。location / { add_header X-Frame-Options "DENY"; }
日志控制
access_log
:指定该location
的访问日志位置。location /admin/ { access_log /var/log/nginx/admin_access.log; }
error_log
:指定该location
的错误日志位置和级别。location /admin/ { error_log /var/log/nginx/admin_error.log warn; }
连接和请求限制
limit_conn
:限制同一 IP 地址的并发连接数。limit_conn_zone $binary_remote_addr zone=addr:10m; location /download/ { limit_conn addr 1; }
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; }
安全与权限控制
auth_basic
:为指定路径添加基本认证。location /secure/ { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; }
deny
和allow
:设置 IP 地址的访问权限控制。location /admin/ { allow 192.168.1.0/24; deny all; }
缓存优化
proxy_cache
:配置反向代理的缓存。location / { proxy_cache my_cache; proxy_cache_key $scheme$proxy_host$request_uri; }
proxy_cache_valid
:定义缓存的有效时间。location / { proxy_cache_valid 200 10m; }
压缩
gzip
:启用 GZIP 压缩,减少传输数据量。location / { gzip on; gzip_types text/plain text/css application/json application/javascript; }
反向代理优化
proxy_set_header
:向后端服务器传递特定的请求头。location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
proxy_buffering
:启用或禁用缓冲响应。location / { proxy_buffering on; }
proxy_read_timeout
:设置从后端服务器读取响应的超时时间。location / { proxy_read_timeout 60s; }
其他指令
internal
:将location
块设置为内部使用,不允许外部访问。location /internal/ { internal; proxy_pass http://internal_server; }
index
:指定访问目录时的默认文件。location / { index index.html index.htm; }
autoindex
:启用目录列表显示,适用于文件目录浏览。location /files/ { autoindex on; }
stub_status
:显示 NGINX 的当前状态,适用于监控。location /nginx_status { stub_status on; }
由于都是nginx相关的资料,就不在当前文档专门教程,有需要可以根据上文进行搜索与学习
注意的是,配置可能会改坏,谨慎在业务环境进行测试