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 };

分类:服务器_操作系统教程 时间:2012-01-04 人气:8
本文关键词:
分享到:

相关文章

  • linux服务器下LNMP安装与配置方法 2014-07-09

    现在很多朋友都选择了linux服务器下配置LNMP(linux+nginx+mysql+php),这里分享下LNMP安装与配置方法,需要的朋友可以参考下 Nginx与apache、lighttp性能综合对比,如下图: 注意:关闭rpm默认安装的apache和mysql 1.准备php函数的rpm包 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-deve

  • freebsd6.2 nginx+php+mysql+zend系统优化防止ddos攻击 2013-01-11

    一、安装软件前的准备 系统的安装:插入freebsd6.2以上的光盘,最小化安装系统,同时安装好ports 二、手动安装nginx+php 1) 进入系统后,准备cvs更新: 1. cd /usr/ports/net/cvsup-without-gui 2. cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile 3. # vi /etc/ports-supfile 将其中的#*default host=CHANGE_THIS.

  • linux下防DDOS攻击软件及使用方法详解 2012-09-29

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

  • 服务器安全之Ddos攻击攻击与防御讲述 2015-01-29

    本文章详细的介绍了关于服务器安全中的Ddos攻击攻击与防御的方法,有需要了解的朋友可以参考一下。 [ 目录 ] 一 背景 二 应急响应 三 常见ddos攻击及防御 四 根源及反击 五 总结 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击。因为我们本身并不从事这种类型的攻击,这种攻击技术一般也是比较粗糙的,所以讨论得比较少,但是既然发生了这样的攻击我们觉

  • DDoS攻防战:CC攻击防御系统部署 2012-01-04

    1. 系统效果 此DDOS应用层防御系统已经部署在了http://www.yfdc.org网站上(如果访问失败,请直接访问位于国内的服务器http://121.42.45.55进行在线测试)。 此防御系统位于应用层,可以有效防止非法用户对服务器资源的滥用: 只要是发送高频率地、应用层请求以实现大量消耗系统资源的攻击方式,皆可有效防御。 其实现的基本思想是: 定期分析所有访问用户在过去各个时间段内的请求频率,将频率高于指定阈值的用户判定为资源滥用者,将其封杀一段时间,时效过后,防御系统自动将其解封

  • nginx下无法访问中文文件名 2012-01-10

      方法一:   搞了大半天nginx下无法访问中文文件名的问题,现在看来是secureCRT的问题?   看来还是字符集的问题了。   看来nginx不需要象apache那样要单独加载支持中文模块。   服务器端字符集如下   [[email protected]]# locale   LANG=en_US.UTF-8   LC_CTYPE=”en_US.UTF-8″   LC_NUMERIC=”en_US.UTF-8″   LC_TIME=”en_US.UTF-8″   LC_COLLATE=”en_US.

  • 用Nginx做NodeJS应用的负载均衡 2012-01-10

    《用Nginx做NodeJS应用的负载均衡》 作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs 负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持。负载均衡的架构如图所示: 对于复杂的Web应用来说,用Nginx做前端负载均衡是理所当然的事。 下面,我们用Nginx做NodeJS应用的负载均衡。 1、配置Nginx 修改nginx.conf: .... upstream sample { server 127.0.0.1

  • 数据分析告诉你:Php最不安全,Nginx比Apache安全 2012-01-11

    Google安全研究者Anthony Ferrara分析了那些安装PHP、Python、Nginx、Apache、Wordpress的网站(来自W3Techs),发现70%以上安装着PHP(含有漏洞的版本)的网站都是不安全的。 Php最不安全,Nginx比Apache安全 从统计数据中可以看出:在开发语言安全性中,PHP的排名垫底,Python和Perl相对安全;在web服务器中,Nginx比Apache略胜一筹;流行应用中WordPress安全性较强。 针对PHP的统计分析 以下版本的PHP目

  • 为重负网络优化 Nginx 和 Node.js 2012-01-14

    在搭建高吞吐量web应用这个议题上,NginX和Node.js可谓是天生一对。他们都是基于事件驱动模型而设计,可以轻易突破Apache等传统web服务器的C10K瓶颈。预设的配置已经可以获得很高的并发,不过,要是大家想在廉价硬件上做到每秒数千以上的请求,还是有一些工作要做的。 这篇文章假定读者们使用NginX的HttpProxyModule来为上游的node.js服务器充当反向代理。我们将介绍Ubuntu 10.04以上系统sysctl的调优,以及node.js应用与NginX的调优。当然,如果

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.057 (s). 10 q(s)