annotate src/http/ngx_http_upstream.h @ 1378:0be898896d1a

backup upstream servers
author Igor Sysoev <igor@sysoev.ru>
date Thu, 09 Aug 2007 13:54:33 +0000
parents 5383f5232364
children 56f1ea5baabb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4 */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 #ifndef _NGX_HTTP_UPSTREAM_H_INCLUDED_
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #define _NGX_HTTP_UPSTREAM_H_INCLUDED_
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 #include <ngx_config.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 #include <ngx_core.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 #include <ngx_event.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14 #include <ngx_event_connect.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15 #include <ngx_event_pipe.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16 #include <ngx_http.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18
665
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
19 #define NGX_HTTP_UPSTREAM_FT_ERROR 0x00000002
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
20 #define NGX_HTTP_UPSTREAM_FT_TIMEOUT 0x00000004
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
21 #define NGX_HTTP_UPSTREAM_FT_INVALID_HEADER 0x00000008
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
22 #define NGX_HTTP_UPSTREAM_FT_HTTP_500 0x00000010
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
23 #define NGX_HTTP_UPSTREAM_FT_HTTP_503 0x00000020
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
24 #define NGX_HTTP_UPSTREAM_FT_HTTP_404 0x00000040
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
25 #define NGX_HTTP_UPSTREAM_FT_BUSY_LOCK 0x00000080
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
26 #define NGX_HTTP_UPSTREAM_FT_MAX_WAITING 0x00000100
1378
0be898896d1a backup upstream servers
Igor Sysoev <igor@sysoev.ru>
parents: 1295
diff changeset
27 #define NGX_HTTP_UPSTREAM_FT_NOLIVE 0x40000000
665
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
28 #define NGX_HTTP_UPSTREAM_FT_OFF 0x80000000
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31 #define NGX_HTTP_UPSTREAM_INVALID_HEADER 40
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
32
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34 typedef struct {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
35 ngx_msec_t bl_time;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
36 ngx_uint_t bl_state;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
38 ngx_uint_t status;
889
a9a7e4b1a72b the previous fix does not actually fix overflow
Igor Sysoev <igor@sysoev.ru>
parents: 884
diff changeset
39 time_t response_sec;
a9a7e4b1a72b the previous fix does not actually fix overflow
Igor Sysoev <igor@sysoev.ru>
parents: 884
diff changeset
40 ngx_uint_t response_msec;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
41
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
42 ngx_str_t *peer;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 } ngx_http_upstream_state_t;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
46 typedef struct {
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
47 ngx_hash_t headers_in_hash;
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
48 ngx_array_t upstreams;
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
49 /* ngx_http_upstream_srv_conf_t */
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
50 } ngx_http_upstream_main_conf_t;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
51
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
52 typedef struct ngx_http_upstream_srv_conf_s ngx_http_upstream_srv_conf_t;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
53
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
54 typedef ngx_int_t (*ngx_http_upstream_init_pt)(ngx_conf_t *cf,
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
55 ngx_http_upstream_srv_conf_t *us);
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
56 typedef ngx_int_t (*ngx_http_upstream_init_peer_pt)(ngx_http_request_t *r,
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
57 ngx_http_upstream_srv_conf_t *us);
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
58
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
59
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
60 typedef struct {
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
61 ngx_http_upstream_init_pt init_upstream;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
62 ngx_http_upstream_init_peer_pt init;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
63 void *data;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
64 } ngx_http_upstream_peer_t;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
65
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
66
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
67 typedef struct {
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
68 ngx_peer_addr_t *addrs;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
69 ngx_uint_t naddrs;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
70 ngx_uint_t weight;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
71 ngx_uint_t max_fails;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
72 time_t fail_timeout;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
73
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
74 unsigned down:1;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
75 unsigned backup:1;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
76 } ngx_http_upstream_server_t;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
77
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
78
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
79 #define NGX_HTTP_UPSTREAM_CREATE 0x0001
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
80 #define NGX_HTTP_UPSTREAM_WEIGHT 0x0002
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
81 #define NGX_HTTP_UPSTREAM_MAX_FAILS 0x0004
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
82 #define NGX_HTTP_UPSTREAM_FAIL_TIMEOUT 0x0008
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
83 #define NGX_HTTP_UPSTREAM_DOWN 0x0010
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
84 #define NGX_HTTP_UPSTREAM_BACKUP 0x0020
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
85
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
86
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
87 struct ngx_http_upstream_srv_conf_s {
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
88 ngx_http_upstream_peer_t peer;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
89 void **srv_conf;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
90
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
91 ngx_array_t *servers; /* ngx_http_upstream_server_t */
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
92
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
93 ngx_uint_t flags;
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
94 ngx_str_t host;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
95 ngx_str_t file_name;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
96 ngx_uint_t line;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
97 in_port_t port;
906
a0310ac2814f rewritten upstream
Igor Sysoev <igor@sysoev.ru>
parents: 889
diff changeset
98 in_port_t default_port;
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
99 };
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
100
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
101
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
102 typedef struct {
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
103 ngx_http_upstream_srv_conf_t *upstream;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
104
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
105 ngx_msec_t connect_timeout;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
106 ngx_msec_t send_timeout;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
107 ngx_msec_t read_timeout;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
108 ngx_msec_t timeout;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
110 size_t send_lowat;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
111 size_t buffer_size;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
112
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
113 size_t busy_buffers_size;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
114 size_t max_temp_file_size;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
115 size_t temp_file_write_size;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
116
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
117 size_t busy_buffers_size_conf;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
118 size_t max_temp_file_size_conf;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
119 size_t temp_file_write_size_conf;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
120
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
121 ngx_uint_t next_upstream;
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
122 ngx_uint_t store_access;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
123
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
124 ngx_bufs_t bufs;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
126 ngx_flag_t buffering;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
127 ngx_flag_t pass_request_headers;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
128 ngx_flag_t pass_request_body;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
129
629
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
130 ngx_flag_t ignore_client_abort;
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 651
diff changeset
131 ngx_flag_t intercept_errors;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
132 ngx_flag_t cyclic_temp_file;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
134 ngx_path_t *temp_path;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
136 ngx_hash_t hide_headers_hash;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
137 ngx_array_t *hide_headers;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
138 ngx_array_t *pass_headers;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
139
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
140 ngx_str_t schema;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
141 ngx_str_t uri;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
142 ngx_str_t location;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
143 ngx_str_t url; /* used in proxy_rewrite_location */
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
144
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
145 ngx_array_t *store_lengths;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
146 ngx_array_t *store_values;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
147
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
148 signed store:2;
675
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
149 unsigned intercept_404:1;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
150 unsigned change_buffering:1;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
151
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
152 #if (NGX_HTTP_SSL)
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
153 ngx_ssl_t *ssl;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
154 #endif
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
155
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
156 } ngx_http_upstream_conf_t;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
157
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
158
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
159 typedef struct {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
160 ngx_str_t name;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
161 ngx_http_header_handler_pt handler;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
162 ngx_uint_t offset;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
163 ngx_http_header_handler_pt copy_handler;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
164 ngx_uint_t conf;
515
417a087c9c4d nginx-0.1.32-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
165 ngx_uint_t redirect; /* unsigned redirect:1; */
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
166 } ngx_http_upstream_header_t;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
167
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
168
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
169 typedef struct {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
170 ngx_list_t headers;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
171
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
172 ngx_uint_t status_n;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
173 ngx_str_t status_line;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
174
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
175 ngx_table_elt_t *status;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
176 ngx_table_elt_t *date;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
177 ngx_table_elt_t *server;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
178 ngx_table_elt_t *connection;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
179
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
180 ngx_table_elt_t *expires;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
181 ngx_table_elt_t *etag;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
182 ngx_table_elt_t *x_accel_expires;
515
417a087c9c4d nginx-0.1.32-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
183 ngx_table_elt_t *x_accel_redirect;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
184 ngx_table_elt_t *x_accel_limit_rate;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
185
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
186 ngx_table_elt_t *content_type;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
187 ngx_table_elt_t *content_length;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
188
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
189 ngx_table_elt_t *last_modified;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
190 ngx_table_elt_t *location;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
191 ngx_table_elt_t *accept_ranges;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
192 ngx_table_elt_t *www_authenticate;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
193
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
194 #if (NGX_HTTP_GZIP)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
195 ngx_table_elt_t *content_encoding;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
196 #endif
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
197
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
198 ngx_array_t cache_control;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
199 } ngx_http_upstream_headers_in_t;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
200
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
201
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
202 struct ngx_http_upstream_s {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
203 ngx_peer_connection_t peer;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
204
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
205 ngx_event_pipe_t *pipe;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
206
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
207 ngx_chain_t *request_bufs;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
208
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
209 ngx_output_chain_ctx_t output;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
210 ngx_chain_writer_ctx_t writer;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
211
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
212 ngx_http_upstream_conf_t *conf;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
213
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
214 ngx_http_upstream_headers_in_t headers_in;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
215
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
216 ngx_buf_t buffer;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
217 size_t length;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
218
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
219 ngx_chain_t *out_bufs;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
220 ngx_chain_t *busy_bufs;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
221 ngx_chain_t *free_bufs;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
222
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
223 ngx_int_t (*input_filter_init)(void *data);
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
224 ngx_int_t (*input_filter)(void *data, ssize_t bytes);
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
225 void *input_filter_ctx;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
226
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
227 ngx_int_t (*create_request)(ngx_http_request_t *r);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
228 ngx_int_t (*reinit_request)(ngx_http_request_t *r);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
229 ngx_int_t (*process_header)(ngx_http_request_t *r);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
230 void (*abort_request)(ngx_http_request_t *r);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
231 void (*finalize_request)(ngx_http_request_t *r,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
232 ngx_int_t rc);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
233 ngx_int_t (*rewrite_redirect)(ngx_http_request_t *r,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
234 ngx_table_elt_t *h, size_t prefix);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
235
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
236 ngx_msec_t timeout;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
237
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
238 ngx_str_t method;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
239
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
240 ngx_http_upstream_state_t *state;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
241
555
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
242 ngx_str_t uri;
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
243
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
244 ngx_http_cleanup_pt *cleanup;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
245
1291
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1168
diff changeset
246 unsigned store:1;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
247 unsigned cachable:1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
248 unsigned accel:1;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
249
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
250 unsigned buffering:1;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
251
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
252 unsigned request_sent:1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
253 unsigned header_sent:1;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
254 };
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
255
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
256
1162
f59d15404269 $upstream_http_... variables
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
257 ngx_int_t ngx_http_upstream_header_variable(ngx_http_request_t *r,
f59d15404269 $upstream_http_... variables
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
258 ngx_http_variable_value_t *v, uintptr_t data);
f59d15404269 $upstream_http_... variables
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
259
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
260 void ngx_http_upstream_init(ngx_http_request_t *r);
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
261 ngx_http_upstream_srv_conf_t *ngx_http_upstream_add(ngx_conf_t *cf,
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
262 ngx_url_t *u, ngx_uint_t flags);
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
263
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
264
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
265 #define ngx_http_conf_upstream_srv_conf(uscf, module) \
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
266 uscf->srv_conf[module.ctx_index]
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
267
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
268
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
269 extern ngx_module_t ngx_http_upstream_module;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
270
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
271
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
272 #endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */