Skip to content
This repository was archived by the owner on Apr 10, 2025. It is now read-only.

Commit a7d1f91

Browse files
authored
standby: add standby mode (#1365)
* standby: add standby mode Add standby mode for ngx_pagespeed, equivalent to "off" in mod_pagespeed. With this change "off" is deprecated, and people should use "unplugged" instead. * Update mps to include test file * update mps * update mps * update mps
1 parent 61b949c commit a7d1f91

File tree

4 files changed

+61
-15
lines changed

4 files changed

+61
-15
lines changed

src/ngx_pagespeed.cc

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,13 +1152,17 @@ char* ps_merge_srv_conf(ngx_conf_t* cf, void* parent, void* child) {
11521152
delete cfg_s->options;
11531153
cfg_s->options = NULL;
11541154

1155-
if (cfg_s->server_context->global_options()->enabled()) {
1155+
if (!cfg_s->server_context->global_options()->unplugged()) {
11561156
// Validate FileCachePath
11571157
GoogleMessageHandler handler;
11581158
const char* file_cache_path =
11591159
cfg_s->server_context->config()->file_cache_path().c_str();
11601160
if (file_cache_path[0] == '\0') {
1161-
return const_cast<char*>("FileCachePath must be set");
1161+
if (!cfg_s->server_context->global_options()->standby()) {
1162+
return const_cast<char*>("FileCachePath must be set, even for standby");
1163+
} else {
1164+
return const_cast<char*>("FileCachePath must be set");
1165+
}
11621166
} else if (!cfg_m->driver_factory->file_system()->IsDir(
11631167
file_cache_path, &handler).is_true()) {
11641168
return const_cast<char*>(
@@ -1844,11 +1848,6 @@ ngx_int_t ps_resource_handler(ngx_http_request_t* r,
18441848
options = cfg_s->server_context->global_options();
18451849
}
18461850

1847-
if (!options->enabled()) {
1848-
// Disabled via query params or request headers.
1849-
return NGX_DECLINED;
1850-
}
1851-
18521851
request_context->set_options(options->ComputeHttpOptions());
18531852

18541853
// ps_determine_options modified url, removing any ModPagespeedFoo=Bar query
@@ -1875,6 +1874,14 @@ ngx_int_t ps_resource_handler(ngx_http_request_t* r,
18751874
response_category == RequestRouting::kGlobalAdmin ||
18761875
response_category == RequestRouting::kCachePurge;
18771876

1877+
// Normally if we're disabled we won't handle any requests, but if we're in
1878+
// standby mode we do want to handle requests for .pagespeed. resources.
1879+
if (options->unplugged() ||
1880+
(!options->enabled() && !pagespeed_resource)) {
1881+
// Disabled via query params or request headers.
1882+
return NGX_DECLINED;
1883+
}
1884+
18781885
if (!html_rewrite) {
18791886
// create request ctx
18801887
CHECK(ctx == NULL);

src/ngx_rewrite_options.cc

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,15 +192,18 @@ RewriteOptions::OptionScope NgxRewriteOptions::GetOptionScope(
192192

193193
RewriteOptions::OptionSettingResult NgxRewriteOptions::ParseAndSetOptions0(
194194
StringPiece directive, GoogleString* msg, MessageHandler* handler) {
195-
if (IsDirective(directive, "on")) {
196-
set_enabled(RewriteOptions::kEnabledOn);
197-
} else if (IsDirective(directive, "off")) {
198-
set_enabled(RewriteOptions::kEnabledOff);
199-
} else if (IsDirective(directive, "unplugged")) {
200-
set_enabled(RewriteOptions::kEnabledUnplugged);
201-
} else {
195+
EnabledEnum enabled;
196+
if (!ParseFromString(directive, &enabled)) {
202197
return RewriteOptions::kOptionNameUnknown;
203198
}
199+
if (enabled == RewriteOptions::kEnabledOff) {
200+
// In ngx_pagespeed, for historical reasons, we treat "off" as "unplugged".
201+
// Also, "off" is deprecated and people should be using "standby" or
202+
// "unplugged" now depending on which sense they want. See comment on
203+
// RewriteOptions::EnabledEnum.
204+
enabled = RewriteOptions::kEnabledUnplugged;
205+
}
206+
set_enabled(enabled);
204207
return RewriteOptions::kOptionOk;
205208
}
206209

test/pagespeed_test.conf.template

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,42 @@ http {
132132
"@@SERVER_ROOT@@/mod_pagespeed_example/styles/";
133133
}
134134

135+
server {
136+
listen @@SECONDARY_PORT@@;
137+
listen [::]:@@SECONDARY_PORT@@;
138+
server_name pagespeed-off.example.com;
139+
pagespeed FileCachePath "@@FILE_CACHE@@";
140+
pagespeed off;
141+
pagespeed EnableFilters collapse_whitespace;
142+
}
143+
144+
server {
145+
listen @@SECONDARY_PORT@@;
146+
listen [::]:@@SECONDARY_PORT@@;
147+
server_name pagespeed-on.example.com;
148+
pagespeed FileCachePath "@@FILE_CACHE@@";
149+
pagespeed on;
150+
pagespeed EnableFilters collapse_whitespace;
151+
}
152+
153+
server {
154+
listen @@SECONDARY_PORT@@;
155+
listen [::]:@@SECONDARY_PORT@@;
156+
server_name pagespeed-standby.example.com;
157+
pagespeed FileCachePath "@@FILE_CACHE@@";
158+
pagespeed standby;
159+
pagespeed EnableFilters collapse_whitespace;
160+
}
161+
162+
server {
163+
listen @@SECONDARY_PORT@@;
164+
listen [::]:@@SECONDARY_PORT@@;
165+
server_name pagespeed-unplugged.example.com;
166+
pagespeed FileCachePath "@@FILE_CACHE@@";
167+
pagespeed unplugged;
168+
pagespeed EnableFilters collapse_whitespace;
169+
}
170+
135171
pagespeed UseNativeFetcher "@@NATIVE_FETCHER@@";
136172
@@RESOLVER@@
137173

0 commit comments

Comments
 (0)