mirror of
https://github.com/nginx/nginx.git
synced 2025-01-19 01:42:58 +08:00
proxy_cache_methods and fastcgi_cache_methods
This commit is contained in:
parent
980491302b
commit
5ed3691b6e
@ -353,6 +353,13 @@ static ngx_command_t ngx_http_fastcgi_commands[] = {
|
||||
offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_use_stale),
|
||||
&ngx_http_fastcgi_next_upstream_masks },
|
||||
|
||||
{ ngx_string("fastcgi_cache_methods"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
|
||||
ngx_conf_set_bitmask_slot,
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_methods),
|
||||
&ngx_http_upstream_cache_method_mask },
|
||||
|
||||
#endif
|
||||
|
||||
{ ngx_string("fastcgi_temp_path"),
|
||||
@ -1835,7 +1842,8 @@ ngx_http_fastcgi_create_loc_conf(ngx_conf_t *cf)
|
||||
* conf->upstream.bufs.num = 0;
|
||||
* conf->upstream.ignore_headers = 0;
|
||||
* conf->upstream.next_upstream = 0;
|
||||
* conf->upstream.use_stale_cache = 0;
|
||||
* conf->upstream.cache_use_stale = 0;
|
||||
* conf->upstream.cache_methods = 0;
|
||||
* conf->upstream.temp_path = NULL;
|
||||
* conf->upstream.hide_headers_hash = { NULL, 0 };
|
||||
* conf->upstream.uri = { 0, NULL };
|
||||
@ -2083,6 +2091,12 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
|NGX_HTTP_UPSTREAM_FT_OFF;
|
||||
}
|
||||
|
||||
if (conf->upstream.cache_methods == 0) {
|
||||
conf->upstream.cache_methods = prev->upstream.cache_methods;
|
||||
}
|
||||
|
||||
conf->upstream.cache_methods |= NGX_HTTP_GET|NGX_HTTP_HEAD;
|
||||
|
||||
ngx_conf_merge_ptr_value(conf->upstream.cache_valid,
|
||||
prev->upstream.cache_valid, NULL);
|
||||
|
||||
|
@ -377,6 +377,13 @@ static ngx_command_t ngx_http_proxy_commands[] = {
|
||||
offsetof(ngx_http_proxy_loc_conf_t, upstream.cache_use_stale),
|
||||
&ngx_http_proxy_next_upstream_masks },
|
||||
|
||||
{ ngx_string("proxy_cache_methods"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
|
||||
ngx_conf_set_bitmask_slot,
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
offsetof(ngx_http_proxy_loc_conf_t, upstream.cache_methods),
|
||||
&ngx_http_upstream_cache_method_mask },
|
||||
|
||||
#endif
|
||||
|
||||
{ ngx_string("proxy_temp_path"),
|
||||
@ -1885,7 +1892,8 @@ ngx_http_proxy_create_loc_conf(ngx_conf_t *cf)
|
||||
* conf->upstream.bufs.num = 0;
|
||||
* conf->upstream.ignore_headers = 0;
|
||||
* conf->upstream.next_upstream = 0;
|
||||
* conf->upstream.use_stale_cache = 0;
|
||||
* conf->upstream.cache_use_stale = 0;
|
||||
* conf->upstream.cache_methods = 0;
|
||||
* conf->upstream.temp_path = NULL;
|
||||
* conf->upstream.hide_headers_hash = { NULL, 0 };
|
||||
* conf->upstream.uri = { 0, NULL };
|
||||
@ -2139,6 +2147,12 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
(NGX_CONF_BITMASK_SET
|
||||
|NGX_HTTP_UPSTREAM_FT_OFF));
|
||||
|
||||
if (conf->upstream.cache_methods == 0) {
|
||||
conf->upstream.cache_methods = prev->upstream.cache_methods;
|
||||
}
|
||||
|
||||
conf->upstream.cache_methods |= NGX_HTTP_GET|NGX_HTTP_HEAD;
|
||||
|
||||
if (conf->upstream.cache_use_stale & NGX_HTTP_UPSTREAM_FT_OFF) {
|
||||
conf->upstream.cache_use_stale = NGX_CONF_BITMASK_SET
|
||||
|NGX_HTTP_UPSTREAM_FT_OFF;
|
||||
|
@ -329,6 +329,15 @@ static ngx_http_upstream_next_t ngx_http_upstream_next_errors[] = {
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
|
||||
ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[] = {
|
||||
{ ngx_string("GET"), NGX_HTTP_GET},
|
||||
{ ngx_string("HEAD"), NGX_HTTP_HEAD },
|
||||
{ ngx_string("POST"), NGX_HTTP_POST },
|
||||
{ ngx_null_string, 0 }
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
ngx_http_upstream_init(ngx_http_request_t *r)
|
||||
{
|
||||
@ -532,7 +541,7 @@ ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u)
|
||||
ngx_int_t rc;
|
||||
ngx_http_cache_t *c;
|
||||
|
||||
if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) {
|
||||
if (!(r->method & u->conf->cache_methods)) {
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
|
@ -156,6 +156,7 @@ typedef struct {
|
||||
|
||||
ngx_uint_t cache_min_uses;
|
||||
ngx_uint_t cache_use_stale;
|
||||
ngx_uint_t cache_methods;
|
||||
|
||||
ngx_array_t *cache_valid;
|
||||
#endif
|
||||
@ -327,7 +328,9 @@ ngx_int_t ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
|
||||
uscf->srv_conf[module.ctx_index]
|
||||
|
||||
|
||||
extern ngx_module_t ngx_http_upstream_module;
|
||||
extern ngx_module_t ngx_http_upstream_module;
|
||||
extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[];
|
||||
|
||||
|
||||
|
||||
#endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */
|
||||
|
Loading…
Reference in New Issue
Block a user