summaryrefslogtreecommitdiffhomepage
path: root/src/http (follow)
AgeCommit message (Collapse)AuthorFilesLines
2014-12-02Cache: proper wakeup of subrequests.Maxim Dounin1-2/+6
In case of a cache lock timeout and in the aio handler we now call r->write_event_handler() instead of a connection write handler, to make sure to run appropriate subrequest. Previous code failed to run inactive subrequests and hence resulted in suboptimal behaviour, see report by Yichun Zhang: http://mailman.nginx.org/pipermail/nginx-devel/2013-October/004435.html (Infinite hang claimed in the report seems impossible without 3rd party modules, as subrequests will be eventually woken up by the postpone filter.)
2014-12-02Upstream: improved subrequest logging.Maxim Dounin4-21/+45
To ensure proper logging make sure to set current_request in all event handlers, including resolve, ssl handshake, cache lock wait timer and aio read handlers. A macro ngx_http_set_log_request() introduced to simplify this.
2014-12-01Access log: restricted "log_format" to "http" level.Sergey Kandaurov1-7/+1
Specifying the "log_format" directive on levels other than "http" is deprecated since 73d37e1ccb91 (1.1.11).
2014-11-28Write filter: fixed handling of sync bufs (ticket #132).Maxim Dounin1-2/+11
2014-11-28Fixed post_action to not trigger "header already sent" alert.Maxim Dounin1-0/+4
The alert was introduced in 03ff14058272 (1.5.4), and was triggered on each post_action invocation. There is no real need to call header filters in case of post_action, so return NGX_OK from ngx_http_send_header() if r->post_action is set.
2014-11-21SPDY: push pending data while closing a stream as with keepalive.Valentin Bartenev1-1/+51
This helps to avoid delays in sending the last chunk of data because of bad interaction between Nagle's algorithm on nginx side and delayed ACK on the client side. Delays could also be caused by TCP_CORK/TCP_NOPUSH if SPDY was working without SSL and sendfile() was used.
2014-11-18Cache: add support for Cache-Control's s-maxage response directive.Piotr Sikora1-8/+14
Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-11-19Proxy: renamed and rearranged fields in proxy configuration.Roman Arutyunyan1-16/+15
No functional changes.
2014-11-19Upstream: different header lists for cached and uncached requests.Roman Arutyunyan4-106/+135
The upstream modules remove and alter a number of client headers before sending the request to upstream. This set of headers is smaller or even empty when cache is disabled. It's still possible that a request in a cache-enabled location is uncached, for example, if cache entry counter is below min_uses. In this case it's better to alter a smaller set of headers and pass more client headers to backend unchanged. One of the benefits is enabling server-side byte ranges in such requests.
2014-11-19Upstream: moved header lists to separate structures.Roman Arutyunyan4-157/+179
No functional changes.
2014-11-19Upstream: moved header initializations to separate functions.Roman Arutyunyan4-89/+82
No functional changes.
2014-11-19Scgi: do not push redundant NULL element into conf->params.Roman Arutyunyan1-7/+0
2014-11-18Cache: proxy_cache_lock_age and friends.Roman Arutyunyan8-9/+71
Once this age is reached, the cache lock is discarded and another request can acquire the lock. Requests which failed to acquire the lock are not allowed to cache the response.
2014-11-07SPDY: fixed check for too long header name or value.Valentin Bartenev1-3/+3
For further progress a new buffer must be at least two bytes larger than the remaining unparsed data. One more byte is needed for null-termination and another one for further progress. Otherwise inflate() fails with Z_BUF_ERROR.
2014-11-07SPDY: improved debug logging of inflate() calls.Valentin Bartenev1-4/+16
2014-11-04Upstream: support named location for X-Accel-Redirect.Toshikuni Fukaya1-9/+16
2014-10-30Upstream: add "proxy_ssl_certificate" and friends.Piotr Sikora2-0/+154
Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-11-07SPDY: fixed "too long header line" logging.Maxim Dounin1-2/+1
This fixes possible one byte buffer overrun and makes sure ellipsis are always added, see 21043ce2a005.
2014-11-05Cache: removed dead store in ngx_http_file_cache_vary_header().Maxim Dounin1-1/+0
Found by Clang Static Analyzer.
2014-08-25Access log: cancel the flush timer on graceful shutdown.Valentin Bartenev1-1/+15
Previously, it could prevent a worker process from exiting for up to the configured flush timeout.
2014-10-27SPDY: stop emitting multiple empty header values.Piotr Sikora1-2/+6
Previously, nginx would emit empty values in a header with multiple, NULL-separated values. This is forbidden by the SPDY specification, which requires headers to have either a single (possibly empty) value or multiple, NULL-separated non-empty values. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-10-27Upstream: limited next_upstream time and tries when resolving DNS.Gu Feng1-0/+8
When got multiple upstream IP addresses using DNS resolving, the number of upstreams tries and the maxinum time spent for these tries were not affected. This patch fixed it.
2014-10-28Write filter: stored delay in a variable, no functional changes.Roman Arutyunyan1-2/+2
The code is now similar to ngx_event_pipe_read_upstream().
2014-10-28Upstream: proxy_limit_rate and friends.Roman Arutyunyan6-4/+91
The directives limit the upstream read rate. For example, "proxy_limit_rate 42" limits proxy upstream read rate to 42 bytes per second.
2014-10-27Cache: normalization of some Vary headers.Maxim Dounin1-2/+66
Spaces in Accept-Charset, Accept-Encoding, and Accept-Language headers are now ignored. As per syntax of these headers spaces can only appear in places where they are optional.
2014-10-27Cache: multiple variants of a resource now can be stored.Maxim Dounin2-3/+79
If a variant stored can't be used to respond to a request, the variant hash is used as a secondary key. Additionally, if we previously switched to a secondary key, while storing a response to cache we check if the variant hash still apply. If not, we switch back to the original key, to handle cases when Vary changes.
2014-10-27Cache: c->reading flag introduced.Maxim Dounin2-1/+5
It replaces c->buf in checks in ngx_http_file_cache_open(), making it possible to reopen the file without clearing c->buf. No functional changes.
2014-10-27Cache: hash of Vary headers now stored in cache.Maxim Dounin3-2/+153
To cache responses with Vary, we now calculate hash of headers listed in Vary, and return the response from cache only if new request headers match. As of now, only one variant of the same resource can be stored in cache.
2014-10-27Cache: disable caching of responses with Vary (ticket #118).Maxim Dounin2-0/+32
The "proxy_ignore_header" directive now undersands the "Vary" parameter to ignore the header as needed.
2014-10-15Gzip, gunzip: flush busy buffers if any.Maxim Dounin2-4/+16
Previous code resulted in transfer stalls when client happened to read all the data in buffers at once, while all gzip buffers were exhausted (but ctx->nomem wasn't set). Make sure to call next body filter at least once per call if there are busy buffers. Additionally, handling of calls with NULL chain was changed to follow the same logic, i.e., next body filter is only called with NULL chain if there are busy buffers. This is expected to fix "output chain is empty" alerts as reported by some users after c52a761a2029 (1.5.7).
2014-10-14Upstream: proxy_force_ranges and friends.Roman Arutyunyan6-0/+60
The directives enable byte ranges for both cached and uncached responses regardless of backend headers.
2014-10-08Fixed possible buffer overrun in "too long header line" logging.Maxim Dounin1-3/+2
Additionally, ellipsis now always added to make it clear that the header logged is incomplete. Reported by Daniil Bondarev.
2014-10-01Upstream: fix $upstream_cache_last_modified variable.Piotr Sikora1-0/+3
Due to the u->headers_in.last_modified_time not being correctly initialized, this variable was evaluated to "Thu, 01 Jan 1970 00:00:00 GMT" for responses cached without the "Last-Modified" header which resulted in subsequent proxy requests being sent with "If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT" header. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-09-29Upstream keepalive: reset c->sent on cached connections.Maxim Dounin1-0/+1
The c->sent is reset to 0 on each request by server-side http code, so do the same on client side. This allows to count number of bytes sent in a particular request.
2014-09-24Limit req: reduced number of parameters in the lookup function.Valentin Bartenev1-8/+7
No functional changes.
2014-09-24Limit req: use complex value in limit_req_zone.Valentin Bartenev1-60/+47
One intentional side effect of this change is that key is allowed only in the first position. Previously, it was possible to specify the key variable at any position, but that was never documented, and is contrary with nginx configuration practice for positional parameters.
2014-09-24Limit conn: aligned field names in structures.Valentin Bartenev1-11/+11
No functional changes.
2014-09-24Limit conn: use complex value in limit_conn_zone (ticket #121).Valentin Bartenev1-67/+54
One intentional side effect of this change is that key is allowed only in the first position. Previously, it was possible to specify the key variable at any position, but that was never documented, and is contrary to nginx configuration practice for positional parameters.
2014-09-24Limit conn: removed deprecated "limit_zone" directive.Valentin Bartenev1-84/+0
It's deprecated since 260d591cb6a3 (1.1.8). The "limit_conn_zone" directive should be used instead.
2014-09-17Avoided to add duplicate hash key in ngx_http_types_slot().Gu Feng1-1/+5
2014-09-18Upstream: fixed file buffers reinit in ngx_http_upstream_reinit().Roman Arutyunyan1-1/+10
Previously, a file buffer start position was reset to the file start. Now it's reset to the previous file buffer end. This fixes reinitialization of requests having multiple successive parts of a single file. Such requests are generated by fastcgi module.
2014-09-18FastCGI: fixed start pointers in request buffers.Roman Arutyunyan1-0/+1
The start pointers are used in ngx_http_upstream_reinit() to reinit FastCGI requests.
2014-09-16Limit req: don't truncate key value to 255 bytes.Valentin Bartenev1-1/+1
While the module allows to use values up to 65535 bytes as a key, that actually never worked properly.
2014-09-13Access log: fixed the "if=" parameter with buffering (ticket #625).Valentin Bartenev1-21/+20
It might not work if there were more than one "access_log" directives pointed to the same file and duplicate buffer parameters.
2014-09-12Upstream: limited next_upstream time and tries (ticket #544).Roman Arutyunyan7-2/+126
The new directives {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_tries and {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_timeout limit the number of upstreams tried and the maximum time spent for these tries when searching for a valid upstream.
2014-09-12Upstream: included backup peers into peer.tries.Roman Arutyunyan2-12/+6
Since peer.tries is never reset it can now be limited if required.
2014-09-11Upstream keepalive: removed "single" parameter remnants.Maxim Dounin1-20/+1
The "single" parameter is deprecated and ignored since 5b5c07dee156 (1.3.2).
2014-09-11Added warning about unset cache keys.Maxim Dounin3-0/+15
In fastcgi, scgi and uwsgi modules there are no default cache keys, and using a cache without a cache key set is likely meaningless.
2014-09-11Style.Maxim Dounin2-2/+4
2014-08-13Upstream: avoided directly terminating the connection.FengGu1-0/+5
When memory allocation failed in ngx_http_upstream_cache(), the connection would be terminated directly in ngx_http_upstream_init_request(). Return a INTERNAL_SERVER_ERROR response instead.