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

王朝学院·作者佚名  2016-08-08
窄屏简体版  字體: 小  |  中  |  大  |  超大  

经常需要配置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 };

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航