Files
incubator-pagespeed-ngx/config
T
Jeff Kaufman aeb0de0e77 configuration: prepare to parse options
Set up the background code for connecting pagespeed configuration structures
(RewriteOptions) to the companion nginx ones.  Passes all the actual work
through to NgxRewriteOptions::ParseAndSetOptions which isn't written yet.
(All it does so far is interpret "pagespeed on/off".)

Adding nginx subclasses of RewriteOptions and ServerContext are a bit overkill
for this change, but we're going to need them a lot.

Once configuration is complete, any mod_pagespeed configuration directive should
work in ngx_pagespeed:

    mod_pagespeed.conf:
      ModPagespeedEnableFilters collapse_whitespace
      ModPagespeedRunExperiment on
      ModPagespeedExperimentSpec id=3;percent=50;default
      ModPagespeedExperimentSpec id=4;percent=50

    ngx_pagespeed.conf:
      pagespeed ModPagespeedEnableFilters collapse_whitespace
      pagespeed ModPagespeedRunExperiment on;
      pagespeed ModPagespeedExperimentSpec "id=3;percent=50;default";
      pagespeed ModPagespeedExperimentSpec "id=4;percent=50";

The `ModPagespeed` is optional, and discouraged:

    ngx_pagespeed.conf:
      pagespeed EnableFilters collapse_whitespace
      pagespeed RunExperiment on;
      pagespeed ExperimentSpec "id=3;percent=50;default";
      pagespeed ExperimentSpec "id=4;percent=50";
2012-11-13 10:26:41 -05:00

83 lines
3.4 KiB
Plaintext

# Copyright 2012 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
mod_pagespeed_dir="$ngx_addon_dir/../mod_pagespeed/src"
ngx_feature="psol"
ngx_feature_name=""
ngx_feature_run=no
ngx_feature_incs="
#include \"net/instaweb/htmlparse/public/html_parse.h\"
#include \"net/instaweb/htmlparse/public/html_writer_filter.h\"
#include \"net/instaweb/util/public/string.h\"
#include \"net/instaweb/util/public/string_writer.h\"
#include \"net/instaweb/util/public/null_message_handler.h\"
"
# TODO(oschaaf): include apr/apr-util in a portable manner
pagespeed_include="$mod_pagespeed_dir
$mod_pagespeed_dir/third_party/chromium/src/
$mod_pagespeed_dir/third_party/protobuf/src/
$mod_pagespeed_dir/out/Release/obj/gen/
$mod_pagespeed_dir/third_party/apr/src/include/
$mod_pagespeed_dir/third_party/apr/gen/arch/linux/x64/include/
$mod_pagespeed_dir/third_party/aprutil/src/include/
$mod_pagespeed_dir/third_party/aprutil/gen/arch/linux/x64/include/"
ngx_feature_path="$pagespeed_include"
pagespeed_automatic_dir="$mod_pagespeed_dir/net/instaweb/automatic"
pagespeed_libs="-lstdc++ $pagespeed_automatic_dir/pagespeed_automatic.a -lrt"
ngx_feature_libs="$pagespeed_libs"
ngx_feature_test="
GoogleString output_buffer;
net_instaweb::StringWriter write_to_string(&output_buffer);
net_instaweb::NullMessageHandler handler;
net_instaweb::HtmlParse html_parse(&handler);
net_instaweb::HtmlWriterFilter html_writer_filter(&html_parse);
html_writer_filter.set_writer(&write_to_string);
html_parse.AddFilter(&html_writer_filter);
html_parse.StartParse(\"http:example.com\");
html_parse.ParseText(
\"<html ><body ><h1 >Test</h1 ><p>Test Text</p></body></html>\n\");
html_parse.FinishParse();
printf(\"parsed as: %s\", output_buffer.c_str())"
# Test whether we have pagespeed and can compile and link against it.
. "$ngx_addon_dir/cpp_feature"
if [ $ngx_found = yes ]; then
ps_src="$ngx_addon_dir/src"
ngx_addon_name=ngx_pagespeed
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ps_src/ngx_pagespeed.cc"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ps_src/ngx_rewrite_driver_factory.cc"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ps_src/ngx_rewrite_options.cc"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ps_src/ngx_server_context.cc"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ps_src/ngx_base_fetch.cc"
HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES $ngx_addon_name"
CORE_LIBS="$CORE_LIBS
$pagespeed_libs
$mod_pagespeed_dir/out/Release/obj.target/third_party/serf/libserf.a
$mod_pagespeed_dir/out/Release/obj.target/third_party/apr/libapr.a
$mod_pagespeed_dir/out/Release/obj.target/third_party/aprutil/libaprutil.a"
CORE_INCS="$CORE_INCS $pagespeed_include"
else
cat << END
$0: error: module ngx_pagespeed requires the pagespeed optimization library
END
exit 1
fi
have=NGX_PAGESPEED . auto/have