Mercurial > hg > nginx
annotate src/http/ngx_http_upstream.h @ 3440:88741ec7731a stable-0.7
merge r3294, r3305:
Fix a bug introduced in r2032: After a child process has read a terminate
message from a channel, the process tries to read the channel again.
The kernel (at least FreeBSD) may preempt the process and sends a SIGIO
signal to a master process. The master process sends a new terminate message,
the kernel switches again to the the child process, and the child process
reads the messages instead of an EAGAIN error. And this may repeat over
and over. Being that the child process can not exit the cycle and test
the termination flag set by the message handler.
The fix disallow the master process to send a new terminate message on
SIGIO signal reception. It may send the message only on SIGALARM signal.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 01 Feb 2010 15:49:36 +0000 |
parents | 61962127b166 |
children | ebcee0063cd8 0d8b8c84bab7 |
rev | line source |
---|---|
479 | 1 |
2 /* | |
3 * Copyright (C) Igor Sysoev | |
4 */ | |
5 | |
6 | |
7 #ifndef _NGX_HTTP_UPSTREAM_H_INCLUDED_ | |
8 #define _NGX_HTTP_UPSTREAM_H_INCLUDED_ | |
9 | |
10 | |
11 #include <ngx_config.h> | |
12 #include <ngx_core.h> | |
13 #include <ngx_event.h> | |
14 #include <ngx_event_connect.h> | |
15 #include <ngx_event_pipe.h> | |
16 #include <ngx_http.h> | |
17 | |
18 | |
665 | 19 #define NGX_HTTP_UPSTREAM_FT_ERROR 0x00000002 |
20 #define NGX_HTTP_UPSTREAM_FT_TIMEOUT 0x00000004 | |
21 #define NGX_HTTP_UPSTREAM_FT_INVALID_HEADER 0x00000008 | |
22 #define NGX_HTTP_UPSTREAM_FT_HTTP_500 0x00000010 | |
2268
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
23 #define NGX_HTTP_UPSTREAM_FT_HTTP_502 0x00000020 |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
24 #define NGX_HTTP_UPSTREAM_FT_HTTP_503 0x00000040 |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
25 #define NGX_HTTP_UPSTREAM_FT_HTTP_504 0x00000080 |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
26 #define NGX_HTTP_UPSTREAM_FT_HTTP_404 0x00000100 |
2944
f892042956e3
merge r2895, r2896, r2926, r2927, r2928, r2930, and r2936:
Igor Sysoev <igor@sysoev.ru>
parents:
2875
diff
changeset
|
27 #define NGX_HTTP_UPSTREAM_FT_UPDATING 0x00000200 |
f892042956e3
merge r2895, r2896, r2926, r2927, r2928, r2930, and r2936:
Igor Sysoev <igor@sysoev.ru>
parents:
2875
diff
changeset
|
28 #define NGX_HTTP_UPSTREAM_FT_BUSY_LOCK 0x00000400 |
f892042956e3
merge r2895, r2896, r2926, r2927, r2928, r2930, and r2936:
Igor Sysoev <igor@sysoev.ru>
parents:
2875
diff
changeset
|
29 #define NGX_HTTP_UPSTREAM_FT_MAX_WAITING 0x00000800 |
1378 | 30 #define NGX_HTTP_UPSTREAM_FT_NOLIVE 0x40000000 |
665 | 31 #define NGX_HTTP_UPSTREAM_FT_OFF 0x80000000 |
479 | 32 |
2268
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
33 #define NGX_HTTP_UPSTREAM_FT_STATUS (NGX_HTTP_UPSTREAM_FT_HTTP_500 \ |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
34 |NGX_HTTP_UPSTREAM_FT_HTTP_502 \ |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
35 |NGX_HTTP_UPSTREAM_FT_HTTP_503 \ |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
36 |NGX_HTTP_UPSTREAM_FT_HTTP_504 \ |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
37 |NGX_HTTP_UPSTREAM_FT_HTTP_404) |
479 | 38 |
39 #define NGX_HTTP_UPSTREAM_INVALID_HEADER 40 | |
40 | |
41 | |
2786
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
42 #define NGX_HTTP_UPSTREAM_IGN_XA_REDIRECT 0x00000002 |
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
43 #define NGX_HTTP_UPSTREAM_IGN_XA_EXPIRES 0x00000004 |
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
44 #define NGX_HTTP_UPSTREAM_IGN_EXPIRES 0x00000008 |
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
45 #define NGX_HTTP_UPSTREAM_IGN_CACHE_CONTROL 0x00000010 |
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
46 |
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
47 |
479 | 48 typedef struct { |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
49 ngx_msec_t bl_time; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
50 ngx_uint_t bl_state; |
479 | 51 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
52 ngx_uint_t status; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
53 time_t response_sec; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
54 ngx_uint_t response_msec; |
2402 | 55 off_t response_length; |
563 | 56 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
57 ngx_str_t *peer; |
479 | 58 } ngx_http_upstream_state_t; |
59 | |
60 | |
61 typedef struct { | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
62 ngx_hash_t headers_in_hash; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
63 ngx_array_t upstreams; |
884 | 64 /* ngx_http_upstream_srv_conf_t */ |
509 | 65 } ngx_http_upstream_main_conf_t; |
66 | |
884 | 67 typedef struct ngx_http_upstream_srv_conf_s ngx_http_upstream_srv_conf_t; |
68 | |
69 typedef ngx_int_t (*ngx_http_upstream_init_pt)(ngx_conf_t *cf, | |
70 ngx_http_upstream_srv_conf_t *us); | |
71 typedef ngx_int_t (*ngx_http_upstream_init_peer_pt)(ngx_http_request_t *r, | |
72 ngx_http_upstream_srv_conf_t *us); | |
73 | |
74 | |
75 typedef struct { | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
76 ngx_http_upstream_init_pt init_upstream; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
77 ngx_http_upstream_init_peer_pt init; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
78 void *data; |
884 | 79 } ngx_http_upstream_peer_t; |
80 | |
509 | 81 |
82 typedef struct { | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
83 ngx_peer_addr_t *addrs; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
84 ngx_uint_t naddrs; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
85 ngx_uint_t weight; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
86 ngx_uint_t max_fails; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
87 time_t fail_timeout; |
884 | 88 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
89 unsigned down:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
90 unsigned backup:1; |
884 | 91 } ngx_http_upstream_server_t; |
92 | |
651 | 93 |
884 | 94 #define NGX_HTTP_UPSTREAM_CREATE 0x0001 |
95 #define NGX_HTTP_UPSTREAM_WEIGHT 0x0002 | |
96 #define NGX_HTTP_UPSTREAM_MAX_FAILS 0x0004 | |
97 #define NGX_HTTP_UPSTREAM_FAIL_TIMEOUT 0x0008 | |
98 #define NGX_HTTP_UPSTREAM_DOWN 0x0010 | |
99 #define NGX_HTTP_UPSTREAM_BACKUP 0x0020 | |
100 | |
651 | 101 |
884 | 102 struct ngx_http_upstream_srv_conf_s { |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
103 ngx_http_upstream_peer_t peer; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
104 void **srv_conf; |
884 | 105 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
106 ngx_array_t *servers; /* ngx_http_upstream_server_t */ |
884 | 107 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
108 ngx_uint_t flags; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
109 ngx_str_t host; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
110 u_char *file_name; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
111 ngx_uint_t line; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
112 in_port_t port; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
113 in_port_t default_port; |
884 | 114 }; |
651 | 115 |
116 | |
117 typedef struct { | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
118 ngx_http_upstream_srv_conf_t *upstream; |
884 | 119 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
120 ngx_msec_t connect_timeout; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
121 ngx_msec_t send_timeout; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
122 ngx_msec_t read_timeout; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
123 ngx_msec_t timeout; |
479 | 124 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
125 size_t send_lowat; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
126 size_t buffer_size; |
529 | 127 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
128 size_t busy_buffers_size; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
129 size_t max_temp_file_size; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
130 size_t temp_file_write_size; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
131 |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
132 size_t busy_buffers_size_conf; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
133 size_t max_temp_file_size_conf; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
134 size_t temp_file_write_size_conf; |
509 | 135 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
136 ngx_bufs_t bufs; |
529 | 137 |
2786
4e002555652d
proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents:
2754
diff
changeset
|
138 ngx_uint_t ignore_headers; |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
139 ngx_uint_t next_upstream; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
140 ngx_uint_t store_access; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
141 ngx_flag_t buffering; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
142 ngx_flag_t pass_request_headers; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
143 ngx_flag_t pass_request_body; |
479 | 144 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
145 ngx_flag_t ignore_client_abort; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
146 ngx_flag_t intercept_errors; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
147 ngx_flag_t cyclic_temp_file; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
148 |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
149 ngx_path_t *temp_path; |
479 | 150 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
151 ngx_hash_t hide_headers_hash; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
152 ngx_array_t *hide_headers; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
153 ngx_array_t *pass_headers; |
509 | 154 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
155 #if (NGX_HTTP_CACHE) |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
156 ngx_shm_zone_t *cache; |
479 | 157 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
158 ngx_uint_t cache_min_uses; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
159 ngx_uint_t cache_use_stale; |
2875
6e1941b321b7
proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents:
2786
diff
changeset
|
160 ngx_uint_t cache_methods; |
479 | 161 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
162 ngx_array_t *cache_valid; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
163 #endif |
509 | 164 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
165 ngx_array_t *store_lengths; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
166 ngx_array_t *store_values; |
1295
5383f5232364
proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents:
1291
diff
changeset
|
167 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
168 signed store:2; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
169 unsigned intercept_404:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
170 unsigned change_buffering:1; |
581 | 171 |
577 | 172 #if (NGX_HTTP_SSL) |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
173 ngx_ssl_t *ssl; |
2754 | 174 ngx_flag_t ssl_session_reuse; |
577 | 175 #endif |
176 | |
479 | 177 } ngx_http_upstream_conf_t; |
178 | |
179 | |
509 | 180 typedef struct { |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
181 ngx_str_t name; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
182 ngx_http_header_handler_pt handler; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
183 ngx_uint_t offset; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
184 ngx_http_header_handler_pt copy_handler; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
185 ngx_uint_t conf; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
186 ngx_uint_t redirect; /* unsigned redirect:1; */ |
509 | 187 } ngx_http_upstream_header_t; |
188 | |
189 | |
190 typedef struct { | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
191 ngx_list_t headers; |
509 | 192 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
193 ngx_uint_t status_n; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
194 ngx_str_t status_line; |
529 | 195 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
196 ngx_table_elt_t *status; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
197 ngx_table_elt_t *date; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
198 ngx_table_elt_t *server; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
199 ngx_table_elt_t *connection; |
509 | 200 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
201 ngx_table_elt_t *expires; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
202 ngx_table_elt_t *etag; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
203 ngx_table_elt_t *x_accel_expires; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
204 ngx_table_elt_t *x_accel_redirect; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
205 ngx_table_elt_t *x_accel_limit_rate; |
509 | 206 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
207 ngx_table_elt_t *content_type; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
208 ngx_table_elt_t *content_length; |
509 | 209 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
210 ngx_table_elt_t *last_modified; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
211 ngx_table_elt_t *location; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
212 ngx_table_elt_t *accept_ranges; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
213 ngx_table_elt_t *www_authenticate; |
509 | 214 |
215 #if (NGX_HTTP_GZIP) | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
216 ngx_table_elt_t *content_encoding; |
509 | 217 #endif |
218 | |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
219 off_t content_length_n; |
1885
e5897822515f
test response length in proxy/fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents:
1701
diff
changeset
|
220 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
221 ngx_array_t cache_control; |
509 | 222 } ngx_http_upstream_headers_in_t; |
223 | |
479 | 224 |
1658 | 225 typedef struct { |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
226 ngx_str_t host; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
227 in_port_t port; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
228 ngx_uint_t no_port; /* unsigned no_port:1 */ |
2422
7af1e5fe102c
variable support for unix sockets in fastcgi_pass and proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents:
2402
diff
changeset
|
229 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
230 ngx_uint_t naddrs; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
231 in_addr_t *addrs; |
2422
7af1e5fe102c
variable support for unix sockets in fastcgi_pass and proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents:
2402
diff
changeset
|
232 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
233 struct sockaddr *sockaddr; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
234 socklen_t socklen; |
2422
7af1e5fe102c
variable support for unix sockets in fastcgi_pass and proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents:
2402
diff
changeset
|
235 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
236 ngx_resolver_ctx_t *ctx; |
1658 | 237 } ngx_http_upstream_resolved_t; |
238 | |
239 | |
2386
4ccaa42de633
use already available r and u instead of ev
Igor Sysoev <igor@sysoev.ru>
parents:
2377
diff
changeset
|
240 typedef void (*ngx_http_upstream_handler_pt)(ngx_http_request_t *r, |
4ccaa42de633
use already available r and u instead of ev
Igor Sysoev <igor@sysoev.ru>
parents:
2377
diff
changeset
|
241 ngx_http_upstream_t *u); |
4ccaa42de633
use already available r and u instead of ev
Igor Sysoev <igor@sysoev.ru>
parents:
2377
diff
changeset
|
242 |
4ccaa42de633
use already available r and u instead of ev
Igor Sysoev <igor@sysoev.ru>
parents:
2377
diff
changeset
|
243 |
479 | 244 struct ngx_http_upstream_s { |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
245 ngx_http_upstream_handler_pt read_event_handler; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
246 ngx_http_upstream_handler_pt write_event_handler; |
2377
87b8c44906b5
*) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents:
2285
diff
changeset
|
247 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
248 ngx_peer_connection_t peer; |
479 | 249 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
250 ngx_event_pipe_t *pipe; |
479 | 251 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
252 ngx_chain_t *request_bufs; |
479 | 253 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
254 ngx_output_chain_ctx_t output; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
255 ngx_chain_writer_ctx_t writer; |
479 | 256 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
257 ngx_http_upstream_conf_t *conf; |
479 | 258 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
259 ngx_http_upstream_headers_in_t headers_in; |
509 | 260 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
261 ngx_http_upstream_resolved_t *resolved; |
1658 | 262 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
263 ngx_buf_t buffer; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
264 size_t length; |
581 | 265 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
266 ngx_chain_t *out_bufs; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
267 ngx_chain_t *busy_bufs; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
268 ngx_chain_t *free_bufs; |
581 | 269 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
270 ngx_int_t (*input_filter_init)(void *data); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
271 ngx_int_t (*input_filter)(void *data, ssize_t bytes); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
272 void *input_filter_ctx; |
479 | 273 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
274 #if (NGX_HTTP_CACHE) |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
275 ngx_int_t (*create_key)(ngx_http_request_t *r); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
276 #endif |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
277 ngx_int_t (*create_request)(ngx_http_request_t *r); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
278 ngx_int_t (*reinit_request)(ngx_http_request_t *r); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
279 ngx_int_t (*process_header)(ngx_http_request_t *r); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
280 void (*abort_request)(ngx_http_request_t *r); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
281 void (*finalize_request)(ngx_http_request_t *r, |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
282 ngx_int_t rc); |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
283 ngx_int_t (*rewrite_redirect)(ngx_http_request_t *r, |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
284 ngx_table_elt_t *h, size_t prefix); |
479 | 285 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
286 ngx_msec_t timeout; |
527 | 287 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
288 ngx_http_upstream_state_t *state; |
479 | 289 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
290 ngx_str_t method; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
291 ngx_str_t schema; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
292 ngx_str_t uri; |
555 | 293 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
294 ngx_http_cleanup_pt *cleanup; |
569 | 295 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
296 unsigned store:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
297 unsigned cacheable:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
298 unsigned accel:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
299 unsigned ssl:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
300 #if (NGX_HTTP_CACHE) |
3092 | 301 unsigned cache_status:3; |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
302 #endif |
479 | 303 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
304 unsigned buffering:1; |
649 | 305 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
306 unsigned request_sent:1; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2422
diff
changeset
|
307 unsigned header_sent:1; |
479 | 308 }; |
309 | |
310 | |
2268
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
311 typedef struct { |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
312 ngx_uint_t status; |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
313 ngx_uint_t mask; |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
314 } ngx_http_upstream_next_t; |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
315 |
33556140681a
*) ngx_http_upstream_test_next()
Igor Sysoev <igor@sysoev.ru>
parents:
2184
diff
changeset
|
316 |
1162 | 317 ngx_int_t ngx_http_upstream_header_variable(ngx_http_request_t *r, |
318 ngx_http_variable_value_t *v, uintptr_t data); | |
319 | |
3245 | 320 ngx_int_t ngx_http_upstream_create(ngx_http_request_t *r); |
479 | 321 void ngx_http_upstream_init(ngx_http_request_t *r); |
651 | 322 ngx_http_upstream_srv_conf_t *ngx_http_upstream_add(ngx_conf_t *cf, |
884 | 323 ngx_url_t *u, ngx_uint_t flags); |
1701
40d004d95d88
*) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents:
1658
diff
changeset
|
324 ngx_int_t ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf, |
40d004d95d88
*) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents:
1658
diff
changeset
|
325 ngx_http_upstream_conf_t *conf, ngx_http_upstream_conf_t *prev, |
40d004d95d88
*) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents:
1658
diff
changeset
|
326 ngx_str_t *default_hide_headers, ngx_hash_init_t *hash); |
884 | 327 |
328 | |
329 #define ngx_http_conf_upstream_srv_conf(uscf, module) \ | |
330 uscf->srv_conf[module.ctx_index] | |
509 | 331 |
479 | 332 |
2875
6e1941b321b7
proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents:
2786
diff
changeset
|
333 extern ngx_module_t ngx_http_upstream_module; |
6e1941b321b7
proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents:
2786
diff
changeset
|
334 extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[]; |
6e1941b321b7
proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents:
2786
diff
changeset
|
335 |
479 | 336 |
337 | |
338 #endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */ |