summaryrefslogtreecommitdiffhomepage
path: root/src/stream (follow)
AgeCommit message (Collapse)AuthorFilesLines
2016-12-08Map: the "volatile" parameter.Ruslan Ermilov1-1/+14
By default, "map" creates cacheable variables [1]. With this parameter it creates a non-cacheable variable. An original idea was to deduce the cacheability of the "map" variable by checking the cacheability of variables specified in source and resulting values, but it turned to be too hard. For example, a cacheable variable can be overridden with the "set" directive or with the SSI "set" command. Also, keeping "map" variables cacheable by default is good for performance reasons. This required adding a new parameter. [1] Before db699978a33f (1.11.0), the cacheability of the "map" variable could vary depending on the cacheability of variables specified in resulting values (ticket #1090). This is believed to be a bug rather than a feature.
2016-12-08Map: simplified "map" block parser.Ruslan Ermilov1-1/+2
No functional changes.
2016-12-05SSL: $ssl_curves (ticket #1088).Maxim Dounin1-0/+3
The variable contains a list of curves as supported by the client. Known curves are listed by their names, unknown ones are shown in hex, e.g., "0x001d:prime256v1:secp521r1:secp384r1". Note that OpenSSL uses session data for SSL_get1_curves(), and it doesn't store full list of curves supported by the client when serializing a session. As a result $ssl_curves is only available for new sessions (and will be empty for reused ones). The variable is only meaningful when using OpenSSL 1.0.2 and above. With older versions the variable is empty.
2016-12-05SSL: $ssl_ciphers (ticket #870).Maxim Dounin1-0/+3
The variable contains list of ciphers as supported by the client. Known ciphers are listed by their names, unknown ones are shown in hex, e.g., ""AES128-SHA:AES256-SHA:0x00ff". The variable is fully supported only when using OpenSSL 1.0.2 and above. With older version there is an attempt to provide some information using SSL_get_shared_ciphers(). It only lists known ciphers though. Moreover, as OpenSSL uses session data for SSL_get_shared_ciphers(), and it doesn't store relevant data when serializing a session. As a result $ssl_ciphers is only available for new sessions (and not available for reused ones) when using OpenSSL older than 1.0.2.
2016-10-31Upstream: do not unnecessarily create per-request upstreams.Ruslan Ermilov1-17/+17
If proxy_pass (and friends) with variables evaluates an upstream specified with literal address, nginx always created a per-request upstream. Now, if there's a matching upstream specified in the configuration (either implicit or explicit), it will be used instead.
2016-10-31Upstream: added the ngx_http_upstream_resolved_t.name field.Ruslan Ermilov3-5/+4
This fixes inconsistency in what is stored in the "host" field. Normally it would contain the "host" part of the parsed URL (e.g., proxy_pass with variables), but for the case of an implicit upstream specified with literal address it contained the text representation of the socket address (that is, host including port for IP). Now the "host" field always contains the "host" part of the URL, while the text representation of the socket address is stored in the newly added "name" field. The ngx_http_upstream_create_round_robin_peer() function was modified accordingly in a way to be compatible with the code that does not know about the new "name" field. The "stream" code was similarly modified except for not adding compatibility in ngx_stream_upstream_create_round_robin_peer(). This change is also a prerequisite for the next change.
2016-10-31Upstream: removed unnecessary condition in proxy_eval() and friends.Ruslan Ermilov1-1/+1
The first condition added in d3454e719bbb should have just replaced the second one.
2016-10-19SSL: compatibility with BoringSSL.Maxim Dounin1-1/+2
BoringSSL changed SSL_set_tlsext_host_name() to be a real function with a (const char *) argument, so it now triggers a warning due to conversion from (u_char *). Added an explicit cast to silence the warning. Prodded by Piotr Sikora, Alessandro Ghedini.
2016-10-10Modules compatibility: removed dependencies on NGX_STREAM_SSL.Maxim Dounin4-14/+0
External structures are now identical regardless of stream SSL module compiled in or not.
2016-10-05Stream ssl_preread: fixed $ssl_preread_server_name variable.Sergey Kandaurov1-1/+2
Made sure to set the variable length only after successful SNI parsing.
2016-10-03Modules compatibility: removed unneeded NGX_HAVE_REUSEPORT checks.Maxim Dounin1-2/+0
Removed NGX_HAVE_REUSEPORT from the signature accordingly.
2016-10-03Modules compatibility: removed unneeded IPV6_V6ONLY checks.Maxim Dounin3-3/+3
The IPV6_V6ONLY macro is now checked only while parsing appropriate flag and when using the macro. The ipv6only field in listen structures is always initialized to 1, even if not supported on a given platform. This is expected to prevent a module compiled without IPV6_V6ONLY from accidentally creating dual sockets if loaded into main binary with proper IPV6_V6ONLY support.
2016-09-29Introduced the NGX_COMPAT macro.Ruslan Ermilov2-0/+6
When enabled, some structures are padded to be size compatible with their NGINX Plus versions.
2016-09-29Modules compatibility: down flag promoted to a bitmask.Maxim Dounin1-1/+1
It is to be used as a bitmask with various bits set/reset when appropriate. Any bit set means that the peer should not be used, that is, exactly what current checks do, no additional changes required.
2016-09-29Modules compatibility: upstream config field.Maxim Dounin2-0/+3
It is to be used to track version of an upstream configuration used for request processing.
2016-09-29Modules compatibility: status fields.Maxim Dounin1-0/+2
2016-09-29Modules compatibility: health check fields.Maxim Dounin1-1/+3
2016-09-29Modules compatibility: slow start fields.Maxim Dounin2-0/+3
2016-09-29Stream: style.Ruslan Ermilov1-0/+2
Explicitly initialized peer's max_conns for upstreams created with variables similar to how it's done in http.
2016-09-22Upstream: max_conns.Ruslan Ermilov6-1/+51
2016-09-22Upstream: removed the quick recovery mechanism.Ruslan Ermilov2-12/+0
Its usefulness it questionable, and it interacts badly with max_conns.
2016-09-22Upstream: introduced u->upstream.Maxim Dounin2-0/+3
It holds upstream{} block configuration, including ones selected via run-time lookup using variables.
2016-09-22Upstream: style.Maxim Dounin3-3/+0
2016-07-25Upstream: style, ngx_http_upstream_rr_peer_t.next moved.Maxim Dounin1-2/+2
2016-09-20Fixed log levels of configuration parsing errors.Valentin Bartenev1-2/+2
All the errors that prevent loading configuration must be printed on the "emerg" log level. Previously, nginx might silently fail to load configuration in some cases as the default log level is "error".
2016-09-16Upstream hash: fixed missing upstream name initialization.Vladimir Homutov1-0/+1
2016-09-15Stream ssl_preread: removed internal macro.Vladimir Homutov1-6/+6
The ngx_log_debug() macro is internal and should not be used.
2016-09-15Stream: ssl_preread module.Vladimir Homutov1-0/+448
The ssl_preread module extracts information from the SSL Client Hello message without terminating SSL. Currently, only $ssl_preread_server_name variable is supported, which contains server name from the SNI extension.
2016-09-15Stream: preread phase.Vladimir Homutov3-1/+145
In this phase, head of a stream is read and analysed before proceeding to the content phase. Amount of data read is controlled by the module implementing the phase, but not more than defined by the "preread_buffer_size" directive. The time spent on processing preread is controlled by the "preread_timeout" directive. The typical preread phase module will parse the beginning of a stream and set variable that may be used by the content phase, for example to make routing decision.
2016-09-15Stream: phases.Roman Arutyunyan9-183/+425
2016-09-15Stream: filters.Roman Arutyunyan7-100/+471
2016-09-08Stream: increase default value for proxy_protocol_timeout to 30s.Dmitry Volyntsev1-1/+1
2016-09-01Stream: realip module.Dmitry Volyntsev3-0/+352
2016-09-06Stream: allow using the session context inside handlers.Dmitry Volyntsev1-21/+16
Previously, it was not possible to use the stream context inside ngx_stream_init_connection() handlers. Now, limit_conn, access handlers, as well as those added later, can create their own contexts.
2016-09-06Stream: $proxy_protocol_addr and $proxy_protocol_port.Dmitry Volyntsev1-0/+50
2016-09-06Stream: the "proxy_protocol" parameter of the "listen" directive.Dmitry Volyntsev4-1/+122
2016-09-06Stream: postpone session initialization under accept mutex.Dmitry Volyntsev2-3/+42
Previously, it was possible that some system calls could be invoked while holding the accept mutex. This is clearly wrong as it prevents incoming connections from being accepted as quickly as possible.
2016-09-05Stream: log module.Vladimir Homutov5-0/+1554
2016-09-02Stream: upstream response time variables.Vladimir Homutov3-0/+103
The $upstream_connect_time, $upstream_first_byte_time and $upstream_session_time variables keep corresponding times.
2016-09-02Stream: $upstream_bytes_sent and $upstream_bytes_received.Vladimir Homutov3-2/+78
2016-09-02Stream: the $upstream_addr variable.Vladimir Homutov4-2/+116
Keeps the full address of the upstream server. If several servers were contacted during proxying, their addresses are separated by commas, e.g. "192.168.1.1:80, 192.168.1.2:80".
2016-08-11Stream: the $status variable.Roman Arutyunyan5-57/+112
The stream session status is one of the following: 200 - normal completion 403 - access forbidden 500 - internal server error 502 - bad gateway 503 - limit conn
2016-08-26Stream: the $protocol variable.Vladimir Homutov1-0/+19
The variable keeps protocol used by the client, "TCP" or "UDP".
2016-08-26Stream: the $session_time variable.Vladimir Homutov3-0/+41
The variable keeps time spent on processing the stream session.
2016-08-26Stream: the $bytes_received variable.Vladimir Homutov1-4/+13
The variable keeps the number of bytes received from the client.
2016-08-23Geo: fixed warnings when removing nonexistent ranges.Ruslan Ermilov1-7/+3
geo $geo { ranges; 10.0.0.0-10.0.0.255 test; delete 10.0.1.0-10.0.1.255; # should warn delete 10.0.0.0-10.0.0.255; delete 10.0.0.0-10.0.0.255; # should warn }
2016-08-23Geo: fixed insertion of ranges specified in descending order.Ruslan Ermilov1-3/+8
2016-08-23Geo: fixed removing a range in certain cases.Ruslan Ermilov1-1/+1
If the range includes two or more /16 networks and does not start at the /16 boundary, the last subrange was not removed (see 91cff7f97a50 for details).
2016-08-23Geo: fixed overflow when iterating over ranges.Ruslan Ermilov1-2/+10
2016-08-17Ensure "listen" exists in a mail or stream server (ticket #1049).Roman Arutyunyan2-0/+13