nginx 全局变量及防DDOS攻击的简单配置

   经常需要配置Nginx ,其中有许多以 $ 开头的变量,经常需要查阅nginx 所支持的变量。

  可能是对 Ngixn资源不熟悉,干脆就直接读源码,分析出支持的变量。

  Nginx支持的http变量实现在 ngx_http_variables.c 的 ngx_http_core_variables存储实现:

  ngx_http_core_variables

  1 static ngx_http_variable_t ngx_http_core_variables[] = {

  2

  3 { ngx_string("http_host"), NULL, ngx_http_variable_header,

  4 offsetof(ngx_http_request_t, headers_in.host), 0, 0 },

  5

  6 { ngx_string("http_user_agent"), NULL, ngx_http_variable_header,

  7 offsetof(ngx_http_request_t, headers_in.user_agent), 0, 0 },

  8

  9 { ngx_string("http_referer"), NULL, ngx_http_variable_header,

  10 offsetof(ngx_http_request_t, headers_in.referer), 0, 0 },

  11

  12 #if (NGX_HTTP_GZIP)

  13 { ngx_string("http_via"), NULL, ngx_http_variable_header,

  14 offsetof(ngx_http_request_t, headers_in.via), 0, 0 },

  15 #endif

  16

  17 #if (NGX_HTTP_PROXY || NGX_HTTP_REALIP)

  18 { ngx_string("http_x_forwarded_for"), NULL, ngx_http_variable_header,

  19 offsetof(ngx_http_request_t, headers_in.x_forwarded_for), 0, 0 },

  20 #endif

  21

  22 { ngx_string("http_cookie"), NULL, ngx_http_variable_headers,

  23 offsetof(ngx_http_request_t, headers_in.cookies), 0, 0 },

  24

  25 { ngx_string("content_length"), NULL, ngx_http_variable_header,

  26 offsetof(ngx_http_request_t, headers_in.content_length), 0, 0 },

  27

  28 { ngx_string("content_type"), NULL, ngx_http_variable_header,

  29 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 },

  30

  31 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 },

  32

  33 { ngx_string("binary_remote_addr"), NULL,

  34 ngx_http_variable_binary_remote_addr, 0, 0, 0 },

  35

  36 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 },

  37

  38 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 },

  39

  40 { ngx_string("server_addr"), NULL, ngx_http_variable_server_addr, 0, 0, 0 },

  41

  42 { ngx_string("server_port"), NULL, ngx_http_variable_server_port, 0, 0, 0 },

  43

  44 { ngx_string("server_protocol"), NULL, ngx_http_variable_request,

  45 offsetof(ngx_http_request_t, http_protocol), 0, 0 },

  46

  47 { ngx_string("scheme"), NULL, ngx_http_variable_scheme, 0, 0, 0 },

  48

  49 { ngx_string("request_uri"), NULL, ngx_http_variable_request,

  50 offsetof(ngx_http_request_t, unparsed_uri), 0, 0 },

  51

  52 { ngx_string("uri"), NULL, ngx_http_variable_request,

  53 offsetof(ngx_http_request_t, uri),

  54 NGX_HTTP_VAR_NOCACHEABLE, 0 },

  55

  56 { ngx_string("document_uri"), NULL, ngx_http_variable_request,

  57 offsetof(ngx_http_request_t, uri),

  58 NGX_HTTP_VAR_NOCACHEABLE, 0 },

  59

  60 { ngx_string("request"), NULL, ngx_http_variable_request_line, 0, 0, 0 },

  61

  62 { ngx_string("document_root"), NULL,

  63 ngx_http_variable_document_root, 0, NGX_HTTP_VAR_NOCACHEABLE, 0 },

  64

  65 { ngx_string("realpath_root"), NULL,

  66 ngx_http_variable_realpath_root, 0, NGX_HTTP_VAR_NOCACHEABLE, 0 },

  67

  68 { ngx_string("query_string"), NULL, ngx_http_variable_request,

  69 offsetof(ngx_http_request_t, args),

  70 NGX_HTTP_VAR_NOCACHEABLE, 0 },

  71

  72 { ngx_string("args"),

  73 ngx_http_variable_request_set,

  74 ngx_http_variable_request,

  75 offsetof(ngx_http_request_t, args),

  76 NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 },

  77

  78 { ngx_string("is_args"), NULL, ngx_http_variable_is_args,

  79 0, NGX_HTTP_VAR_NOCACHEABLE, 0 },

  80

  81 { ngx_string("request_filename"), NULL,

  82 ngx_http_variable_request_filename, 0,

  83 NGX_HTTP_VAR_NOCACHEABLE, 0 },

  84

  85 { ngx_string("server_name"), NULL, ngx_http_variable_server_name, 0, 0, 0 },

  86

  87 { ngx_string("request_method"), NULL,

  88 ngx_http_variable_request_method, 0,

  89 NGX_HTTP_VAR_NOCACHEABLE, 0 },

  90

  91 { ngx_string("remote_user"), NULL, ngx_http_variable_remote_user, 0, 0, 0 },

  92

  93 { ngx_string("body_bytes_sent"), NULL, ngx_http_variable_body_bytes_sent,

  94 0, 0, 0 },

  95

  96 { ngx_string("request_completion"), NULL,

  97 ngx_http_variable_request_completion,

  98 0, 0, 0 },

  99

  100 { ngx_string("request_body"), NULL,

  101 ngx_http_variable_request_body,

  102 0, 0, 0 },

  103

  104 { ngx_string("request_body_file"), NULL,

  105 ngx_http_variable_request_body_file,

  106 0, 0, 0 },

  107

  108 { ngx_string("sent_http_content_type"), NULL,

  109 ngx_http_variable_sent_content_type, 0, 0, 0 },

  110

  111 { ngx_string("sent_http_content_length"), NULL,

  112 ngx_http_variable_sent_content_length, 0, 0, 0 },

  113

  114 { ngx_string("sent_http_location"), NULL,

  115 ngx_http_variable_sent_location, 0, 0, 0 },

  116

  117 { ngx_string("sent_http_last_modified"), NULL,

  118 ngx_http_variable_sent_last_modified, 0, 0, 0 },

  119

  120 { ngx_string("sent_http_connection"), NULL,

  121 ngx_http_variable_sent_connection, 0, 0, 0 },

  122

  123 { ngx_string("sent_http_keep_alive"), NULL,

  124 ngx_http_variable_sent_keep_alive, 0, 0, 0 },

  125

  126 { ngx_string("sent_http_transfer_encoding"), NULL,

  127 ngx_http_variable_sent_transfer_encoding, 0, 0, 0 },

  128

  129 { ngx_string("sent_http_cache_control"), NULL, ngx_http_variable_headers,

  130 offsetof(ngx_http_request_t, headers_out.cache_control), 0, 0 },

  131

  132 { ngx_string("limit_rate"), ngx_http_variable_request_set_size,

  133 ngx_http_variable_request_get_size,

  134 offsetof(ngx_http_request_t, limit_rate),

  135 NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 },

  136

  137 { ngx_string("nginx_version"), NULL, ngx_http_variable_nginx_version,

  138 0, 0, 0 },

  139

  140 { ngx_string("hostname"), NULL, ngx_http_variable_hostname,

  141 0, 0, 0 },

  142

  143 { ngx_string("pid"), NULL, ngx_http_variable_pid,

  144 0, 0, 0 },

  145

  146 { ngx_null_string, NULL, NULL, 0, 0, 0 }

  147 };

 

时间: 2024-09-15 04:22:43

nginx 全局变量及防DDOS攻击的简单配置的相关文章

DDoS终结者 测思科防DDoS攻击系统

DDoS(分布式拒绝服务)攻击是利用TCP/IP协议漏洞进行的一种简单而致命的网络攻击,由于TCP/IP协议的这种会话机制漏洞无法修改,因此缺少直接有效的防御手段.大量实例证明利用传统设备被动防御基本是徒劳的,而且现有防火墙设备还会因为有限的处理能力陷入瘫痪,成为网络运行瓶颈.另外,攻击过程中目标主机也必然陷入瘫痪. 国内已经有越来越多的网站(Discuz.IM286等)中招落马,因此本报评测员,协同本地xx电信运营商在重庆市建立的互联网交换中心(IXC),对思科Riverhead防DDoS攻击

linux下防DDOS攻击软件及使用方法详解

  互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用 iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. 一.什么是DDOS攻击? DDoS也就是分布式拒绝服务攻击.它使用与普通的拒绝服务攻击同样的方法,但是发起攻击的源是多个.通常攻击者使用下载的工具渗透无保护的主机,当获得该主机的适当的访问权限后,攻击者在主机中安装软件的服务或进程(以下简侈怔理).这些代理保持睡眠状态,直到从它们的主控端得到指令,

Linux防DDOS攻击一些方法总结

DDoS deflate介绍 DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本.它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP. DDoS deflate官方网站:http://deflate.medialayer.com/ 如何确认是否受到DDOS攻击?执行:  代码如下 复制代码 netstat -ntu | awk '{print $5}' | cut -d: -f1 |

为CentOS安装防DDOS攻击软件DDoS-Deflate

DDoS-Deflate是一款非常小巧的防御和减轻DDoS攻击的工具,它可以通过监测netstat来跟踪来创建大量互联网连接的IP地址信息,通过APF或IPTABLES禁止或阻档这些非常IP地址. 我们可以使用netstat命令查看当前系统连接的状态,是否有受到DDOS攻击 [root@localhost ~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n &http://www.aliyun.

linux中防DDOS攻击软件DDoS-Deflate详解

DDoS-Deflate安装及配置 1.安装  代码如下 复制代码 wget http://www.inetbase.com/scripts/ddos/install.sh chmod 0700 install.sh ./install.sh 2.配置 配置文件是 /usr/local/ddos/ddos.conf ,默认有如下配置  代码如下 复制代码 FREQ=1 NO_OF_CONNECTIONS=150 APF_BAN=0 KILL=1 EMAIL_TO="test@qq.com&quo

防DDoS攻击11招

1.确保所有服务器采用最新系统,并打上安全补丁.计算机紧急响应协调中心发现,几乎每个受到DDoS攻击的系统都没有及时打上补丁. 2.确保管理员对所有主机进行检查,而不仅针对关键主机.这是为了确保管理员知道每个主机系统在运行什么?谁在使用主机?哪些人可以访问主机?不然,即使黑客侵犯了系统,也很难查明. 3.确保从服务器相应的目录或文件数据库中删除未使用的服务如FTP或NFS.Wu-Ftpd等守护程序存在一些已知的漏洞,黑客通过根攻击就能获得访问特权系统的权限,并能访问其他系统--甚至是受防火墙保护

iptables禁ping和防ddos向外发包配置

主要讲2个基本的实际应用,主要涉及到禁ping(ipv4)以及禁止udp,即禁止有黑客利用服务器向外发包ddos攻击方面的内容. 一.如果没有iptables禁止ping echo 1 > /proc/sys/net/ipv4/icmp_echo_igore_all #开启 echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all #关闭 二.  iptables禁止ping的命令如下: iptables -I INPUT -i eth0 -p icmp

linux下利用iptables防Ddos攻击配置

使用iptables 设定单个客户机的指定时间内发起最大连接数请求,超过限制的直接DROP  代码如下 复制代码 iptables -A INPUT -p tcp –dport 80 -m state –state NEW -m recent –set –name WEB iptables -A INPUT -p tcp –dport 80 -m state –state NEW -m recent –update –seconds 30 –hitcount 20 –rttl –name WEB

Nginx中防止SQL注入攻击的相关配置介绍_nginx

防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义. 对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免. 用rewrite有个前提需要知道,一般用rewrite进行正则匹配只能匹配到网页的URI,也就是url中?前部分,?以后部分是请求参数. 问号后面的请求参数,在nginx用$query_string表 示,不能在rewrite中匹配到,需要用if判断 例如,对于参数中带有单引号的'进行匹配然后定向到错误页面, /