Ticket #2562: proxy_peer_host.patch

File proxy_peer_host.patch, 6.6 KB (added by lyokha@…, 3 years ago)
  • src/event/ngx_event_connect.h

    diff -r 7ec761f0365f src/event/ngx_event_connect.h
    a b  
    3939    struct sockaddr                 *sockaddr;
    4040    socklen_t                        socklen;
    4141    ngx_str_t                       *name;
     42    ngx_str_t                       *server;
    4243
    4344    ngx_uint_t                       tries;
    4445    ngx_msec_t                       start_time;
  • src/http/modules/ngx_http_proxy_module.c

    diff -r 7ec761f0365f src/http/modules/ngx_http_proxy_module.c
    a b  
    171171    ngx_http_variable_value_t *v, uintptr_t data);
    172172static ngx_int_t ngx_http_proxy_port_variable(ngx_http_request_t *r,
    173173    ngx_http_variable_value_t *v, uintptr_t data);
     174static ngx_int_t ngx_http_proxy_peer_host_variable(ngx_http_request_t *r,
     175    ngx_http_variable_value_t *v, uintptr_t data);
    174176static ngx_int_t
    175177    ngx_http_proxy_add_x_forwarded_for_variable(ngx_http_request_t *r,
    176178    ngx_http_variable_value_t *v, uintptr_t data);
     
    877879    { ngx_string("proxy_port"), NULL, ngx_http_proxy_port_variable, 0,
    878880      NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE|NGX_HTTP_VAR_NOHASH, 0 },
    879881
     882    { ngx_string("proxy_peer_host"), NULL, ngx_http_proxy_peer_host_variable, 0,
     883      NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE|NGX_HTTP_VAR_NOHASH, 0 },
     884
    880885    { ngx_string("proxy_add_x_forwarded_for"), NULL,
    881886      ngx_http_proxy_add_x_forwarded_for_variable, 0, NGX_HTTP_VAR_NOHASH, 0 },
    882887
     
    25642569
    25652570
    25662571static ngx_int_t
     2572ngx_http_proxy_peer_host_variable(ngx_http_request_t *r,
     2573    ngx_http_variable_value_t *v, uintptr_t data)
     2574{
     2575    if (r->upstream == NULL || r->upstream->peer.server == NULL) {
     2576        v->not_found = 1;
     2577        return NGX_OK;
     2578    }
     2579
     2580    v->len = r->upstream->peer.server->len;
     2581    v->valid = 1;
     2582    v->no_cacheable = 0;
     2583    v->not_found = 0;
     2584    v->data = r->upstream->peer.server->data;
     2585
     2586    return NGX_OK;
     2587}
     2588
     2589
     2590static ngx_int_t
    25672591ngx_http_proxy_add_x_forwarded_for_variable(ngx_http_request_t *r,
    25682592    ngx_http_variable_value_t *v, uintptr_t data)
    25692593{
  • src/http/modules/ngx_http_upstream_hash_module.c

    diff -r 7ec761f0365f src/http/modules/ngx_http_upstream_hash_module.c
    a b  
    266266    pc->sockaddr = peer->sockaddr;
    267267    pc->socklen = peer->socklen;
    268268    pc->name = &peer->name;
     269    pc->server = &peer->server;
    269270
    270271    peer->conns++;
    271272
     
    601602    pc->sockaddr = best->sockaddr;
    602603    pc->socklen = best->socklen;
    603604    pc->name = &best->name;
     605    pc->server = &peer->server;
    604606
    605607    best->conns++;
    606608
  • src/http/modules/ngx_http_upstream_ip_hash_module.c

    diff -r 7ec761f0365f src/http/modules/ngx_http_upstream_ip_hash_module.c
    a b  
    236236    pc->sockaddr = peer->sockaddr;
    237237    pc->socklen = peer->socklen;
    238238    pc->name = &peer->name;
     239    pc->server = &peer->server;
    239240
    240241    peer->conns++;
    241242
  • src/http/modules/ngx_http_upstream_least_conn_module.c

    diff -r 7ec761f0365f src/http/modules/ngx_http_upstream_least_conn_module.c
    a b  
    240240    pc->sockaddr = best->sockaddr;
    241241    pc->socklen = best->socklen;
    242242    pc->name = &best->name;
     243    pc->server = &peer->server;
    243244
    244245    best->conns++;
    245246
  • src/http/modules/ngx_http_upstream_random_module.c

    diff -r 7ec761f0365f src/http/modules/ngx_http_upstream_random_module.c
    a b  
    282282    pc->sockaddr = peer->sockaddr;
    283283    pc->socklen = peer->socklen;
    284284    pc->name = &peer->name;
     285    pc->server = &peer->server;
    285286
    286287    peer->conns++;
    287288
     
    392393    pc->sockaddr = peer->sockaddr;
    393394    pc->socklen = peer->socklen;
    394395    pc->name = &peer->name;
     396    pc->server = &peer->server;
    395397
    396398    peer->conns++;
    397399
  • src/http/ngx_http_upstream_round_robin.c

    diff -r 7ec761f0365f src/http/ngx_http_upstream_round_robin.c
    a b  
    477477    pc->sockaddr = peer->sockaddr;
    478478    pc->socklen = peer->socklen;
    479479    pc->name = &peer->name;
     480    pc->server = &peer->server;
    480481
    481482    peer->conns++;
    482483
  • src/stream/ngx_stream_upstream_hash_module.c

    diff -r 7ec761f0365f src/stream/ngx_stream_upstream_hash_module.c
    a b  
    265265    pc->sockaddr = peer->sockaddr;
    266266    pc->socklen = peer->socklen;
    267267    pc->name = &peer->name;
     268    pc->server = &peer->server;
    268269
    269270    peer->conns++;
    270271
     
    600601    pc->sockaddr = best->sockaddr;
    601602    pc->socklen = best->socklen;
    602603    pc->name = &best->name;
     604    pc->server = &peer->server;
    603605
    604606    best->conns++;
    605607
  • src/stream/ngx_stream_upstream_least_conn_module.c

    diff -r 7ec761f0365f src/stream/ngx_stream_upstream_least_conn_module.c
    a b  
    236236    pc->sockaddr = best->sockaddr;
    237237    pc->socklen = best->socklen;
    238238    pc->name = &best->name;
     239    pc->server = &peer->server;
    239240
    240241    best->conns++;
    241242
  • src/stream/ngx_stream_upstream_random_module.c

    diff -r 7ec761f0365f src/stream/ngx_stream_upstream_random_module.c
    a b  
    282282    pc->sockaddr = peer->sockaddr;
    283283    pc->socklen = peer->socklen;
    284284    pc->name = &peer->name;
     285    pc->server = &peer->server;
    285286
    286287    peer->conns++;
    287288
     
    392393    pc->sockaddr = peer->sockaddr;
    393394    pc->socklen = peer->socklen;
    394395    pc->name = &peer->name;
     396    pc->server = &peer->server;
    395397
    396398    peer->conns++;
    397399
  • src/stream/ngx_stream_upstream_round_robin.c

    diff -r 7ec761f0365f src/stream/ngx_stream_upstream_round_robin.c
    a b  
    486486    pc->sockaddr = peer->sockaddr;
    487487    pc->socklen = peer->socklen;
    488488    pc->name = &peer->name;
     489    pc->server = &peer->server;
    489490
    490491    peer->conns++;
    491492