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
diff --git a/src/ngx_pagespeed.cc b/src/ngx_pagespeed.cc
index fcbfb68..7bef853 100644
--- a/src/ngx_pagespeed.cc
+++ b/src/ngx_pagespeed.cc
@@ -1152,13 +1152,17 @@
delete cfg_s->options;
cfg_s->options = NULL;
- if (cfg_s->server_context->global_options()->enabled()) {
+ if (!cfg_s->server_context->global_options()->unplugged()) {
// Validate FileCachePath
GoogleMessageHandler handler;
const char* file_cache_path =
cfg_s->server_context->config()->file_cache_path().c_str();
if (file_cache_path[0] == '\0') {
- return const_cast<char*>("FileCachePath must be set");
+ if (!cfg_s->server_context->global_options()->standby()) {
+ return const_cast<char*>("FileCachePath must be set, even for standby");
+ } else {
+ return const_cast<char*>("FileCachePath must be set");
+ }
} else if (!cfg_m->driver_factory->file_system()->IsDir(
file_cache_path, &handler).is_true()) {
return const_cast<char*>(
@@ -1844,11 +1848,6 @@
options = cfg_s->server_context->global_options();
}
- if (!options->enabled()) {
- // Disabled via query params or request headers.
- return NGX_DECLINED;
- }
-
request_context->set_options(options->ComputeHttpOptions());
// ps_determine_options modified url, removing any ModPagespeedFoo=Bar query
@@ -1875,6 +1874,14 @@
response_category == RequestRouting::kGlobalAdmin ||
response_category == RequestRouting::kCachePurge;
+ // Normally if we're disabled we won't handle any requests, but if we're in
+ // standby mode we do want to handle requests for .pagespeed. resources.
+ if (options->unplugged() ||
+ (!options->enabled() && !pagespeed_resource)) {
+ // Disabled via query params or request headers.
+ return NGX_DECLINED;
+ }
+
if (!html_rewrite) {
// create request ctx
CHECK(ctx == NULL);
diff --git a/src/ngx_rewrite_options.cc b/src/ngx_rewrite_options.cc
index 772b8ea..290872e 100644
--- a/src/ngx_rewrite_options.cc
+++ b/src/ngx_rewrite_options.cc
@@ -192,15 +192,18 @@
RewriteOptions::OptionSettingResult NgxRewriteOptions::ParseAndSetOptions0(
StringPiece directive, GoogleString* msg, MessageHandler* handler) {
- if (IsDirective(directive, "on")) {
- set_enabled(RewriteOptions::kEnabledOn);
- } else if (IsDirective(directive, "off")) {
- set_enabled(RewriteOptions::kEnabledOff);
- } else if (IsDirective(directive, "unplugged")) {
- set_enabled(RewriteOptions::kEnabledUnplugged);
- } else {
+ EnabledEnum enabled;
+ if (!ParseFromString(directive, &enabled)) {
return RewriteOptions::kOptionNameUnknown;
}
+ if (enabled == RewriteOptions::kEnabledOff) {
+ // In ngx_pagespeed, for historical reasons, we treat "off" as "unplugged".
+ // Also, "off" is deprecated and people should be using "standby" or
+ // "unplugged" now depending on which sense they want. See comment on
+ // RewriteOptions::EnabledEnum.
+ enabled = RewriteOptions::kEnabledUnplugged;
+ }
+ set_enabled(enabled);
return RewriteOptions::kOptionOk;
}
diff --git a/test/pagespeed_test.conf.template b/test/pagespeed_test.conf.template
index aa22358..e579589 100644
--- a/test/pagespeed_test.conf.template
+++ b/test/pagespeed_test.conf.template
@@ -132,6 +132,42 @@
"@@SERVER_ROOT@@/mod_pagespeed_example/styles/";
}
+ server {
+ listen @@SECONDARY_PORT@@;
+ listen [::]:@@SECONDARY_PORT@@;
+ server_name pagespeed-off.example.com;
+ pagespeed FileCachePath "@@FILE_CACHE@@";
+ pagespeed off;
+ pagespeed EnableFilters collapse_whitespace;
+ }
+
+ server {
+ listen @@SECONDARY_PORT@@;
+ listen [::]:@@SECONDARY_PORT@@;
+ server_name pagespeed-on.example.com;
+ pagespeed FileCachePath "@@FILE_CACHE@@";
+ pagespeed on;
+ pagespeed EnableFilters collapse_whitespace;
+ }
+
+ server {
+ listen @@SECONDARY_PORT@@;
+ listen [::]:@@SECONDARY_PORT@@;
+ server_name pagespeed-standby.example.com;
+ pagespeed FileCachePath "@@FILE_CACHE@@";
+ pagespeed standby;
+ pagespeed EnableFilters collapse_whitespace;
+ }
+
+ server {
+ listen @@SECONDARY_PORT@@;
+ listen [::]:@@SECONDARY_PORT@@;
+ server_name pagespeed-unplugged.example.com;
+ pagespeed FileCachePath "@@FILE_CACHE@@";
+ pagespeed unplugged;
+ pagespeed EnableFilters collapse_whitespace;
+ }
+
pagespeed UseNativeFetcher "@@NATIVE_FETCHER@@";
@@RESOLVER@@
diff --git a/testing-dependencies/mod_pagespeed b/testing-dependencies/mod_pagespeed
index c50a93f..a41cdab 160000
--- a/testing-dependencies/mod_pagespeed
+++ b/testing-dependencies/mod_pagespeed
@@ -1 +1 @@
-Subproject commit c50a93f2e846dc7b4de8833ae6a19491bc14ed04
+Subproject commit a41cdab05eea514ac9f405fb32bd8e24ff9f0614