mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
allow to set listen options in any server
This commit is contained in:
parent
ba3083bfce
commit
5a95080cb6
@ -1209,6 +1209,12 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf,
|
|||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lsopt->set && addr[i].opt.set) {
|
||||||
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
||||||
|
"a duplicate listen options for %s", addr[i].opt.addr);
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/* check the duplicate "default" server for this address:port */
|
/* check the duplicate "default" server for this address:port */
|
||||||
|
|
||||||
if (lsopt->default_server) {
|
if (lsopt->default_server) {
|
||||||
|
@ -3304,31 +3304,22 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
(void) ngx_sock_ntop((struct sockaddr *) &lsopt.sockaddr, lsopt.addr,
|
(void) ngx_sock_ntop((struct sockaddr *) &lsopt.sockaddr, lsopt.addr,
|
||||||
NGX_SOCKADDR_STRLEN, 1);
|
NGX_SOCKADDR_STRLEN, 1);
|
||||||
|
|
||||||
if (cf->args->nelts > 2 && ngx_strcmp(value[2].data, "default") == 0) {
|
for (n = 2; n < cf->args->nelts; n++) {
|
||||||
lsopt.default_server = 1;
|
|
||||||
n = 3;
|
|
||||||
|
|
||||||
} else {
|
if (ngx_strcmp(value[n].data, "default") == 0) {
|
||||||
n = 2;
|
lsopt.default_server = 1;
|
||||||
}
|
continue;
|
||||||
|
|
||||||
for ( /* void */ ; n < cf->args->nelts; n++) {
|
|
||||||
|
|
||||||
if (lsopt.default_server == 0) {
|
|
||||||
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
|
||||||
"\"%V\" parameter can be specified for "
|
|
||||||
"the default \"listen\" directive only",
|
|
||||||
&value[n]);
|
|
||||||
return NGX_CONF_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_strcmp(value[n].data, "bind") == 0) {
|
if (ngx_strcmp(value[n].data, "bind") == 0) {
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_strncmp(value[n].data, "backlog=", 8) == 0) {
|
if (ngx_strncmp(value[n].data, "backlog=", 8) == 0) {
|
||||||
lsopt.backlog = ngx_atoi(value[n].data + 8, value[n].len - 8);
|
lsopt.backlog = ngx_atoi(value[n].data + 8, value[n].len - 8);
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
|
|
||||||
if (lsopt.backlog == NGX_ERROR || lsopt.backlog == 0) {
|
if (lsopt.backlog == NGX_ERROR || lsopt.backlog == 0) {
|
||||||
@ -3345,6 +3336,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
size.data = value[n].data + 7;
|
size.data = value[n].data + 7;
|
||||||
|
|
||||||
lsopt.rcvbuf = ngx_parse_size(&size);
|
lsopt.rcvbuf = ngx_parse_size(&size);
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
|
|
||||||
if (lsopt.rcvbuf == NGX_ERROR) {
|
if (lsopt.rcvbuf == NGX_ERROR) {
|
||||||
@ -3361,6 +3353,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
size.data = value[n].data + 7;
|
size.data = value[n].data + 7;
|
||||||
|
|
||||||
lsopt.sndbuf = ngx_parse_size(&size);
|
lsopt.sndbuf = ngx_parse_size(&size);
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
|
|
||||||
if (lsopt.sndbuf == NGX_ERROR) {
|
if (lsopt.sndbuf == NGX_ERROR) {
|
||||||
@ -3375,6 +3368,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
if (ngx_strncmp(value[n].data, "accept_filter=", 14) == 0) {
|
if (ngx_strncmp(value[n].data, "accept_filter=", 14) == 0) {
|
||||||
#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
|
#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
|
||||||
lsopt.accept_filter = (char *) &value[n].data[14];
|
lsopt.accept_filter = (char *) &value[n].data[14];
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
#else
|
#else
|
||||||
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
||||||
@ -3388,6 +3382,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
if (ngx_strcmp(value[n].data, "deferred") == 0) {
|
if (ngx_strcmp(value[n].data, "deferred") == 0) {
|
||||||
#if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
|
#if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
|
||||||
lsopt.deferred_accept = 1;
|
lsopt.deferred_accept = 1;
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
#else
|
#else
|
||||||
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
||||||
@ -3418,6 +3413,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
return NGX_CONF_ERROR;
|
return NGX_CONF_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.bind = 1;
|
lsopt.bind = 1;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -3437,6 +3433,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
|
|
||||||
if (ngx_strcmp(value[n].data, "ssl") == 0) {
|
if (ngx_strcmp(value[n].data, "ssl") == 0) {
|
||||||
#if (NGX_HTTP_SSL)
|
#if (NGX_HTTP_SSL)
|
||||||
|
lsopt.set = 1;
|
||||||
lsopt.ssl = 1;
|
lsopt.ssl = 1;
|
||||||
continue;
|
continue;
|
||||||
#else
|
#else
|
||||||
|
@ -46,6 +46,7 @@ typedef struct {
|
|||||||
u_char sockaddr[NGX_SOCKADDRLEN];
|
u_char sockaddr[NGX_SOCKADDRLEN];
|
||||||
socklen_t socklen;
|
socklen_t socklen;
|
||||||
|
|
||||||
|
unsigned set:1;
|
||||||
unsigned default_server:1;
|
unsigned default_server:1;
|
||||||
unsigned bind:1;
|
unsigned bind:1;
|
||||||
unsigned wildcard:1;
|
unsigned wildcard:1;
|
||||||
|
Loading…
Reference in New Issue
Block a user