annotate src/http/ngx_http_upstream.h @ 34:aab2ea7c0458 NGINX_0_1_17

nginx 0.1.17 *) Change: the ngx_http_rewrite_module was rewritten from the scratch. Now it is possible to redirect, to return the error codes, to check the variables and referrers. The directives can be used inside locations. The redirect directive was canceled. *) Feature: the ngx_http_geo_module. *) Feature: the proxy_set_x_var and fastcgi_set_var directives. *) Bugfix: the location configuration with "=" modifier may be used in another location. *) Bugfix: the correct content type was set only for requests that use small caps letters in extension. *) Bugfix: if the proxy_pass or fastcgi_pass directives were set in the location, and access was denied, and the error was redirected to a static page, then the segmentation fault occurred. *) Bugfix: if in a proxied "Location" header was a relative URL, then a host name and a slash were added to them; bug appeared in 0.1.14. *) Bugfix: the system error message was not logged on Linux.
author Igor Sysoev <http://sysoev.ru>
date Thu, 03 Feb 2005 00:00:00 +0300
parents da8c190bdaba
children a39d1b793287
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 /*
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4 */
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
5
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
6
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 #ifndef _NGX_HTTP_UPSTREAM_H_INCLUDED_
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 #define _NGX_HTTP_UPSTREAM_H_INCLUDED_
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
11 #include <ngx_config.h>
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
12 #include <ngx_core.h>
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
13 #include <ngx_event.h>
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
14 #include <ngx_event_connect.h>
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
15 #include <ngx_event_pipe.h>
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
16 #include <ngx_http.h>
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
17
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
18
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
19 #define NGX_HTTP_UPSTREAM_FT_ERROR 0x02
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
20 #define NGX_HTTP_UPSTREAM_FT_TIMEOUT 0x04
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
21 #define NGX_HTTP_UPSTREAM_FT_INVALID_HEADER 0x08
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
22 #define NGX_HTTP_UPSTREAM_FT_HTTP_500 0x10
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
23 #define NGX_HTTP_UPSTREAM_FT_HTTP_404 0x20
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
24 #define NGX_HTTP_UPSTREAM_FT_BUSY_LOCK 0x40
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
25 #define NGX_HTTP_UPSTREAM_FT_MAX_WAITING 0x80
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
26
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
27
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
28 #define NGX_HTTP_UPSTREAM_INVALID_HEADER 40
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
29
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
30
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
31 typedef struct {
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
32 time_t bl_time;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
33 ngx_uint_t bl_state;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
34
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
35 ngx_uint_t status;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
36 time_t time;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
37
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
38 ngx_str_t *peer;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
39 } ngx_http_upstream_state_t;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
40
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
41
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
42 typedef struct {
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
43 ngx_msec_t connect_timeout;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
44 ngx_msec_t send_timeout;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
45 ngx_msec_t read_timeout;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
46
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
47 size_t send_lowat;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
48 size_t header_buffer_size;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
49 size_t busy_buffers_size;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
50 size_t max_temp_file_size;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
51 size_t temp_file_write_size;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
52
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
53 ngx_uint_t next_upstream;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
54
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
55 ngx_bufs_t bufs;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
56
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
57 ngx_flag_t x_powered_by;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
58 ngx_flag_t cyclic_temp_file;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
59
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
60 ngx_path_t *temp_path;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
61 } ngx_http_upstream_conf_t;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
62
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
63
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
64 typedef struct ngx_http_upstream_s ngx_http_upstream_t;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
65
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
66 struct ngx_http_upstream_s {
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
67 ngx_http_request_t *request;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
68
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
69 ngx_peer_connection_t peer;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
70
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
71 ngx_event_pipe_t pipe;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
72
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
73 ngx_output_chain_ctx_t output;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
74 ngx_chain_writer_ctx_t writer;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
75
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
76 ngx_http_upstream_conf_t *conf;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
77
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
78 ngx_buf_t header_in;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
79
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
80 ngx_int_t (*create_request)(ngx_http_request_t *r);
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
81 ngx_int_t (*reinit_request)(ngx_http_request_t *r);
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
82 ngx_int_t (*process_header)(ngx_http_request_t *r);
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
83 ngx_int_t (*send_header)(ngx_http_request_t *r);
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
84 void (*abort_request)(ngx_http_request_t *r);
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
85 void (*finalize_request)(ngx_http_request_t *r,
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
86 ngx_int_t rc);
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
87 ngx_uint_t method;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
88
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
89 ngx_str_t schema;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
90 ngx_str_t uri;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
91 ngx_str_t *location;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
92
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
93 ngx_http_log_ctx_t *log_ctx;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
94 ngx_log_handler_pt log_handler;
32
da8c190bdaba nginx 0.1.16
Igor Sysoev <http://sysoev.ru>
parents: 28
diff changeset
95 ngx_http_log_ctx_t *saved_log_ctx;
da8c190bdaba nginx 0.1.16
Igor Sysoev <http://sysoev.ru>
parents: 28
diff changeset
96 ngx_log_handler_pt saved_log_handler;
28
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
97
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
98 /* used to parse an upstream HTTP header */
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
99 ngx_uint_t status;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
100 u_char *status_start;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
101 u_char *status_end;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
102 ngx_uint_t status_count;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
103 ngx_uint_t parse_state;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
104
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
105 ngx_http_upstream_state_t *state;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
106 ngx_array_t states; /* of ngx_http_upstream_state_t */
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
107
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
108 unsigned cachable:1;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
109
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
110 unsigned request_sent:1;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
111 unsigned header_sent:1;
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
112 };
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
113
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
114
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
115 void ngx_http_upstream_init(ngx_http_request_t *r);
32
da8c190bdaba nginx 0.1.16
Igor Sysoev <http://sysoev.ru>
parents: 28
diff changeset
116 u_char *ngx_http_upstream_log_error(ngx_log_t *log, u_char *buf, size_t len);
28
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
117
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
118
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
119 extern char *ngx_http_upstream_header_errors[];
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
120
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
121
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
122 #endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */