mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 17:52:38 +08:00
104 lines
2.2 KiB
C
104 lines
2.2 KiB
C
#ifndef _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_
|
|
#define _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_
|
|
|
|
|
|
#include <ngx_config.h>
|
|
#include <ngx_array.h>
|
|
#include <ngx_http.h>
|
|
|
|
|
|
#define NGX_HTTP_PROXY_PARSE_NO_HEADER 20
|
|
#define NGX_HTTP_PARSE_TOO_LONG_STATUS_LINE 21
|
|
|
|
typedef struct {
|
|
int dummy;
|
|
} ngx_http_proxy_headers_in_t;
|
|
|
|
|
|
typedef struct {
|
|
int large_header;
|
|
} ngx_http_proxy_loc_conf_t;
|
|
|
|
|
|
typedef struct {
|
|
ngx_str_t host;
|
|
ngx_str_t uri;
|
|
ngx_str_t host_header;
|
|
ngx_str_t port_name;
|
|
int port;
|
|
} ngx_http_proxy_upstream_url_t;
|
|
|
|
|
|
typedef struct {
|
|
struct sockaddr_in;
|
|
ngx_str_t name;
|
|
time_t access;
|
|
int fails;
|
|
} ngx_http_proxy_upstream_t;
|
|
|
|
|
|
typedef struct {
|
|
int amount;
|
|
ngx_http_proxy_upstream_t *upstreams;
|
|
} ngx_http_proxy_upstream_farm_t;
|
|
|
|
|
|
#if 0
|
|
/* location /one/ { proxy_pass http://localhost:9000/two/; } */
|
|
|
|
typedef struct {
|
|
/* "/one/" */
|
|
/* "http://localhost:9000/two/" */
|
|
/* "/two/" */
|
|
*upstream_farm;
|
|
} ngx_http_proxy_pass_t;
|
|
#endif
|
|
|
|
|
|
typedef struct ngx_http_proxy_ctx_s ngx_http_proxy_ctx_t;
|
|
|
|
struct ngx_http_proxy_ctx_s {
|
|
ngx_chain_t *out;
|
|
|
|
int last_hunk;
|
|
ngx_array_t hunks;
|
|
|
|
int hunk_n;
|
|
|
|
ngx_connection_t *connection;
|
|
ngx_http_request_t *request;
|
|
ngx_http_proxy_headers_in_t *headers_in;
|
|
|
|
ngx_http_proxy_upstream_farm_t *upstream;
|
|
int cur_upstream;
|
|
int upstreams;
|
|
|
|
ngx_log_t *log;
|
|
|
|
ngx_hunk_t *header_in;
|
|
int state;
|
|
int status;
|
|
int status_count;
|
|
char *status_line;
|
|
char *request_end;
|
|
int (*state_handler)(ngx_http_request_t *r, ngx_http_proxy_ctx_t *p);
|
|
};
|
|
|
|
|
|
typedef struct {
|
|
char *action;
|
|
char *upstream;
|
|
char *client;
|
|
char *url;
|
|
} ngx_http_proxy_log_ctx_t;
|
|
|
|
|
|
extern ngx_module_t ngx_http_proxy_module;
|
|
|
|
|
|
static int ngx_http_proxy_error(ngx_http_request_t *r, ngx_http_proxy_ctx_t *p,
|
|
int error);
|
|
|
|
|
|
#endif /* _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_ */
|