# Port map:
# 8080 -- master configuration.
# 8081 -- LOADTEST / PROXY / SLURP
# 8082 -- SLURP
# @@APACHE_SECONDARY_PORT@@ -- secondary configuration (8083 debug, 8084 root)
# 8085 --- loopback route testing
#
# Note that when system-testing on CentOS installs we need to authorize these
# ports via semanage.  Any new ports should thus be added to the Makefile in
# this directory, target enable_ports_and_file_access.

# We don't enable XHTML in the default pagespeed.conf.  For the
# add_instrumentation xhtml tests to work, though, we have to enable
# it here.  If we change pagespeed.conf.template to enable XHTML by
# default then we can eliminate this line.
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER application/xhtml+xml

# Do testing using memcached in lieu of the file cache.
#MEMCACHED ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@

# When testing memcached in system tests, let's make sure we are really
# hitting it and not servicing the lookups in-memory.  Note that we will
# cover having a non-zero lru-cache with  memcached in load tests.
#MEMCACHED ModPagespeedLRUCacheKbPerProcess 0

# If X-PSA-Blocking-Rewrite request header is present and its value matches the
# value of ModPagespeedBlockingRewriteKey below, the response will be fully
# rewritten before being flushed to the client.
ModPagespeedBlockingRewriteKey psatest

# By default we test without image beaconing, and use a separate vhost to
# enable image beaconing explicitly.
ModPagespeedCriticalImagesBeaconEnabled false

# By default, resources will not be used for inlining without explicit
# authorization. Supported values are off or a comma-separated list of strings
# from {Script,Stylesheet}.
ModPagespeedInlineResourcesWithoutExplicitAuthorization off

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/max_html_parse_size" >
  ModPagespeedMaxHtmlParseBytes 5000
</Directory>

# This will cause an error report in the startup log if mod_pagespeed is not
# built with ssl, but otherwise will cause no trouble.
ModPagespeedFetchHttps enable

ModPagespeedLibrary 43 1o978_K0_LNE5_ystNklf http://www.modpagespeed.com/rewrite_javascript.js
ModPagespeedRetainComment " google_ad_section*"

# Test proxying of non-.pagespeed. resources.
ModPagespeedMapProxyDomain http://@@APACHE_DOMAIN@@/modpagespeed_http \
                           http://@@PAGESPEED-TEST-HOST@@/do_not_modify
ModPagespeedMapProxyDomain http://@@APACHE_DOMAIN@@/content_type_present \
                           http://@@PAGESPEED-TEST-HOST@@:8091
ModPagespeedMapProxyDomain http://@@APACHE_DOMAIN@@/content_type_absent \
                           http://@@PAGESPEED-TEST-HOST@@:8092

# Turn on "KeepAlive" so we can test it in system_test.sh.
KeepAlive On
KeepAliveTimeout 60
LogFormat "%v %X %P %h %l %u %t \"%r\" %>s %b" common

# Set logging level to 'info' to catch some informational messages which have
# been downgraded from 'error'.
LogLevel info

ModPagespeedStaticAssetPrefix /mod_pagespeed_static/

# We want to test some vhosts without a shared memory cache configured, and if
# the default shared memory metadata cache is enabled we can't do that.  So
# disable it globally and enable it where we need it.
ModPagespeedDefaultSharedMemoryCacheKB 0

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/https_fetch" >
  ModPagespeedDisableFilters inline_images
  ModPagespeedDomain https://@@PAGESPEED-TEST-HOST@@
  ModPagespeedMapProxyDomain http://@@APACHE_DOMAIN@@/https_gstatic_dot_com \
      https://www.gstatic.com/psa/static
</Directory>

# These caching headers are set up for the document root, and
# also serve as a demonstration of good values to set for the entire
# site, if it is to be optimized by mod_pagespeed.
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_example" >
  <IfModule headers_module>
    # To enable to show that mod_pagespeed to rewrites web pages, we must
    # turn off Etags for HTML files and eliminate caching altogether.
    # mod_pagespeed should rewrite HTML files each time they are served.
    # The first time mod_pagespeed sees an HTML file, it may not optimize
    # it fully.  It will optimize better after the second view.  Caching
    # defeats this behavior.
    <FilesMatch "\.(html|htm)$">
      Header unset Etag
      Header set Cache-control "max-age=0, no-cache"
    </FilesMatch>

    # Images, styles, and javascript are all cache-extended for
    # a year by rewriting URLs to include a content hash.  mod_pagespeed
    # can only do this if the resources are cacheable in the first place.
    # The origin caching policy, set here to 10 minutes, dictates how
    # frequently mod_pagespeed must re-read the content files and recompute
    # the content-hash.  As long as the content doesn't actually change,
    # the content-hash will remain the same, and the resources stored
    # in browser caches will stay relevant.
    <FilesMatch "\.(jpg|jpeg|gif|png|js|css)$">
      Header unset Etag
      Header set Cache-control "max-age=600"
    </FilesMatch>
  </IfModule>
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/shard" >
  ModPagespeedShardDomain "@@APACHE_DOMAIN@@" shard1,shard2
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters extend_cache
</Directory>

# add_instrumentation must be enabled so that we can test /mod_pagespeed_beacon.
ModPagespeedEnableFilters add_instrumentation

<Directory "@@APACHE_DOC_ROOT@@/" >
    # This is enabled to make sure we don't crash mod_negotiation.
    Options +MultiViews
</Directory>

# Enable htaccess
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/" >
    AllowOverride All
</Directory>

# Enable resize_rendered_image_dimensions
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/resize_rendered_dimensions" >
    ModPagespeedCriticalImagesBeaconEnabled true
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/" >
    AllowOverride All
    # Some versions of mod_rewrite will refuse to do any work if
    # symlink handling is off.
    Options +FollowSymLinks
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/close_connection/" >
    AllowOverride All
    # Helps tests whether we successfully strip Connection:close
    # results from the origin.
    Options +SymLinksIfOwnerMatch
    Header append 'Connection' 'close'
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/compressed/" >
    # Files in this directory are already compressed so always add
    # the right header.
    Header set Cache-control "max-age=600"
    Header append 'Content-Encoding' 'gzip'
    AddType text/javascript .custom_ext
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/" >
    # Files in this directory should include an err_headers_out
    # header.  'Header always' writes to err_headers_out.
    Header always set X-TestHeader "hello"
</Directory>

ModPagespeedLoadFromFile "http://@@APACHE_DOMAIN@@/mod_pagespeed_test/ipro/instant/" \
                         "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/instant/"

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/cookie/" >
    # Add Vary:Cookie.  This should prevent us from optimizing the
    # vary_cookie.css even though ModPagespeedRespectVary is off.
    # apache/system_test.sh does the fetches test with and without cookies.
    Header append Vary Cookie
    ModPagespeedRespectVary off
    ModPagespeedInPlaceWaitForOptimized on
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/cookie2/" >
    # Add Vary:Cookie2.  This should prevent us from optimizing the
    # vary_cookie2.css even though ModPagespeedRespectVary is off.
    # apache/system_test.sh does the fetches test with and without cookie2.
    Header append Vary Cookie2
    ModPagespeedRespectVary off
    ModPagespeedInPlaceWaitForOptimized on
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/mod_deflate/" >
    AddOutputFilterByType DEFLATE text/css
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/vary/no_respect/" >
  ModPagespeedDisableFilters add_instrumentation,inline_css
  ModPagespeedRespectVary off
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/no_cache/" >
    # Files in this directory should be served uncacheable.
    Header set Cache-control "no-cache"
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/remote_config/" >
    # Files in this directory should be served uncacheable.
    Header set Cache-control "max-age=7200, must-revalidate"
</Directory>

# Set jpeg Quality
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/jpeg_rewriting/" >
    ModPagespeedJpegRecompressionQuality 70
</Directory>

# Set Generic Image Quality
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/webp_rewriting" >
    ModPagespeedImageRecompressionQuality 75
</Directory>

# Set Webp Quality
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/image_rewriting" >
    ModPagespeedWebpRecompressionQuality 65
</Directory>

# Enable split_html
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/split_html/" >
    ModPagespeedEnableFilters split_html,split_html_helper,lazyload_images
    ModPagespeedServeSplitHtmlInTwoChunks on
    ModPagespeedCriticalLineConfig div[@id="container"]/div[4]
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/disable_no_transform" >
  ModPagespeedDisableRewriteOnNoTransform off
  <IfModule headers_module>
     <FilesMatch "\.(js|css)$">
        Header append 'Cache-Control' 'no-transform'
     </FilesMatch>
  </IfModule>
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/no_transform" >
  Header append 'Cache-Control' 'no-transform'
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/strip_subresource_hints/default" >
  ModPagespeedRewriteLevel CoreFilters
  ModPagespeedDisableFilters add_instrumentation
  ModPagespeedDisallow *dontrewriteme*
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/strip_subresource_hints/preserve_on/" >
  ModPagespeedPreserveSubresourceHints on
  ModPagespeedRewriteLevel CoreFilters
  ModPagespeedDisableFilters add_instrumentation
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/strip_subresource_hints/preserve_off/" >
  ModPagespeedPreserveSubresourceHints off
  ModPagespeedRewriteLevel CoreFilters
  ModPagespeedDisableFilters add_instrumentation
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/strip_subresource_hints/default_passthrough/" >
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedDisableFilters add_instrumentation
</Directory>

# This Directory does not even exist, but by setting some options in that
# scope we test to make sure the options we claim are really settable in
# .htaccess.  Note that <Directory> and .htaccess are enforced the same way.
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/htaccess_test" >
  ModPagespeed on
  ModPagespeedAllow *
  ModPagespeedAvoidRenamingIntrospectiveJavascript on
  ModPagespeedBeaconUrl foo
  ModPagespeedCombineAcrossPaths off
  ModPagespeedCssFlattenMaxBytes 100
  ModPagespeedCssImageInlineMaxBytes 100
  ModPagespeedCssInlineMaxBytes 100
  ModPagespeedCssOutlineMinBytes 10000
  ModPagespeedDisableFilters rewrite_images
  ModPagespeedDisallow *bad*
  ModPagespeedDomain example.com
  ModPagespeedEnableFilters extend_cache
  ModPagespeedImageInlineMaxBytes 100
  ModPagespeedImageLimitOptimizedPercent 50
  ModPagespeedImageLimitResizeAreaPercent 50
  ModPagespeedJpegRecompressionQuality 85
  ModPagespeedJsInlineMaxBytes 100
  ModPagespeedJsOutlineMinBytes 10000
  ModPagespeedLowercaseHtmlNames on
  ModPagespeedMapOriginDomain localhost example.com
  ModPagespeedMapRewriteDomain cdn.com example.com
  ModPagespeedMaxHtmlParseBytes 100000
  ModPagespeedMaxInlinedPreviewImagesIndex 10
  ModPagespeedMinImageSizeLowResolutionBytes 100
  ModPagespeedModifyCachingHeaders off
  ModPagespeedRetainComment *ad_tag*
  ModPagespeedRewriteLevel PassThrough
</Directory>

# Establish a proxy mapping where the current server proxies an image
# stored on ref.pssdemos.com.  We use ref.pssdemos.com rather than
# modpagespeed.com so that we use a single html file both for:
#   1. a demo of the feature on modpagespeed.com.  It would
#      be confusing to demo a Proxying when the origin was the
#      same as the proxy.
#   2. A system-test of the feature to be run with our usual testing.
ModPagespeedMapProxyDomain @@APACHE_DOMAIN@@/gstatic_images \
                           http://www.gstatic.com/psa/static

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/forbid_all_disabled/disabled" >
    # Prevent the enabling of these filters for files in this directory
    # -and- all subdirectories (they can't override it, deliberately).
    ModPagespeedForbidAllDisabledFilters true
    ModPagespeedDisableFilters remove_quotes,remove_comments
    ModPagespeedDisableFilters collapse_whitespace
    # Enable this, which was disabled in ../.htaccess, to test that we can
    # enable something already disabled at the same time as we forbid all.
    ModPagespeedEnableFilters inline_css
</Directory>

# This is needed for the server-side includes test in
# apache/system_test.sh.  See mod_pagespeed_test/ssi/.htaccess as well.
<IfModule !include_module>
  LoadModule include_module @@APACHE_MODULES@@/mod_include.so
</IfModule>
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

# For the mod_rewrite test in apache/system_test.sh
<IfModule !rewrite_module>
  LoadModule rewrite_module  @@APACHE_MODULES@@/mod_rewrite.so
</IfModule>

# For the vary: handling test
<IfModule !headers_module>
  LoadModule headers_module  @@APACHE_MODULES@@/mod_headers.so
</IfModule>

# Helps tests that extra headers supplied by the apache conf
# survive single-resource rewrites
#
# http://code.google.com/p/modpagespeed/issues/detail?id=324
Header append 'X-Extra-Header' '1'

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/nostore" >
  Header append 'Cache-Control' 'no-store'
</Directory>

# Build a configuration hierarchy where at the root we have turned on a few
# filters, several of which do not preserve URLs, and in a subdirectory we have
# turned on preserve URLs.
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/preserveurls" >
#ModPagespeedEnableFilters inline_preview_images,lazyload_images
#ModPagespeedEnableFilters resize_mobile_images,rewrite_images,sprite_images
#ModPagespeedEnableFilters fallback_rewrite_css_urls,flatten_css_imports
#ModPagespeedEnableFilters inline_css,move_css_above_scripts,move_css_to_head
#ModPagespeedEnableFilters outline_css,rewrite_css,combine_css
#ModPagespeedEnableFilters combine_javascript,defer_javascript,inline_javascript
#ModPagespeedEnableFilters outline_javascript,rewrite_javascript
ModPagespeedRewriteLevel CoreFilters
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/preserveurls/on" >
ModPagespeedJsPreserveURLs On
ModPagespeedImagePreserveURLs On
ModPagespeedCssPreserveURLs On

# TODO(jmarantz): PreserveURLs should override the explicit setting at
# the level above that turns on inline_preview_images, resize_mobile_images,
# and lazyload_images
ModPagespeedDisableFilters inline_preview_images,resize_mobile_images
ModPagespeedDisableFilters lazyload_images
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/experimental_js_minifier" >
  ModPagespeedUseExperimentalJsMinifier on
</Directory>

# However we should not allow user-specified cache-control on
# rewritten HTML or resources.  This setting helps us make
# sure that we strip any user-specified cache-control when
# we rewrite HTML.  We test this in apache/system_test.sh.
Header set Cache-Control "max-age=600"

# For regression test of connection failing.
ModPagespeedDomain modpagespeed.com:1023

# Test LoadFromFile mapping by mapping one dir to another.
ModPagespeedLoadFromFile "http://@@APACHE_DOMAIN@@/mod_pagespeed_test/load_from_file/web_dir/" "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/load_from_file/file_dir/"
ModPagespeedLoadFromFileMatch "^http://@@APACHE_DOMAIN@@/mod_pagespeed_test/load_from_file_match/web_([^/]*)/" "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/load_from_file/file_\1/"
ModPagespeedLoadFromFileRule Disallow "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/load_from_file/file_dir/httponly/"
ModPagespeedLoadFromFileRuleMatch Disallow \.ssp.css$
ModPagespeedLoadFromFileRuleMatch Allow exception\.ssp\.css$

# Print out detail about connection-refused errors.  We don't negative-test
# this here cause it's a hassle; we just depend on the unit-tests for that.
ModPagespeedListOutstandingUrlsOnError on

ModPagespeedAvoidRenamingIntrospectiveJavascript off

# Test coverage for <ModPagespeedIf>
<ModPagespeedIf spdy>
  # A setting one might want...
  ModPagespeedDisableFilters combine_css

  # Settings that doesn't make much sense, but which we want for tests.
  ModPagespeedDisableFilters rewrite_css
  ModPagespeedDisableFilters extend_cache
  ModPagespeedDisableFilters rewrite_images
</ModPagespeedIf>

<ModPagespeedIf !spdy>
  ModPagespeedShardDomain nonspdy.example.com s1.example.com,s2.example.com
</ModPagespeedIf>

# These will be sent to the origin domain when fetching subresources.
ModPagespeedCustomFetchHeader header value
ModPagespeedCustomFetchHeader x-other False
<Location /mod_pagespeed_log_request_headers.js>
  SetHandler mod_pagespeed_log_request_headers
</Location>

ModPagespeedInPlaceResourceOptimization on

ModPagespeedRespectXForwardedProto on

<Location ~ "/mod_pagespeed_test/response_headers.html*">
  SetHandler mod_pagespeed_response_options_handler
</Location>

ModPagespeedCompressMetadataCache true

# Make a non-empty subdirectory config to make sure that
# cache.flush updates get transmitted to nested configurations.
<Directory "@@APACHE_DOC_ROOT@@/cache_flush/" >
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters inline_css
  ModPagespeedDisableFilters add_instrumentation
</Directory>

# Directory config for gathering sample data from instrumented pages for
# purposes of mobilization.
<Directory "@@APACHE_DOC_ROOT@@/mobilization/" >
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters mobilize
  ModPagespeedLogMobilizationSamples true
</Directory>

# Another VirtualHost can be enabled by default as it does no harm.  This can
# be used for testing alternate configuration settings in system tests without
# restarting Apache.
#
# We use NameVirtualHost so we can have multiple VirtualHost
# configurations sharing the same port.  Note that the port is
# different depending on whether we are running system tests as root
# or as a normal user.  Note that fetches must be done with
#    http_proxy=SECONDARY_HOST:SECONDARY_PORT.
Listen localhost:@@APACHE_SECONDARY_PORT@@
NameVirtualHost localhost:@@APACHE_SECONDARY_PORT@@
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName secondary.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeed on
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@_secondary"
  ModPagespeedCompressMetadataCache false

  ModPagespeedMapProxyDomain secondary.example.com/gstatic_images \
                             http://www.gstatic.com/psa/static

  # This is the same memcached instance as the root configuration,
  # but with a different file-cache path.
#MEMCACHED  ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@

  ModPagespeedCacheFlushFilename cache.flush
  # If you uncomment this, the test will fail, proving we can disable
  # cache-flush polling.
  # ModPagespeedCacheFlushPollIntervalSec 0

  # Helps testing whether the configuration of reporting 'unload' time works.
  ModPagespeedReportUnloadTime on

  # Make a non-empty subdirectory config to make sure that
  # cache.flush updates get transmitted to nested configurations.
  <Directory "@@APACHE_DOC_ROOT@@/cache_flush/" >
    ModPagespeedRewriteLevel PassThrough
    ModPagespeedEnableFilters inline_css
    ModPagespeedDisableFilters add_instrumentation
  </Directory>

#REWRITE   # These lines are only needed for the mod_rewrite test, where
#REWRITE   # we are just trying to prove that we remove mod_rewrite from
#REWRITE   # the request if the URL is going to be handled by mod_pagespeed.
#REWRITE   # In the root install test, this mod_rewrite seems to only take
#REWRITE   # effect in a vhost.  I haven't explored why that is because it
#REWRITE   # doesn't affect the point of the test.
#REWRITE   Options +Indexes
#REWRITE   RewriteEngine on
#REWRITE   RewriteRule (.*).jpg.pagespeed.(.*).jpg /broken.jpg
#REWRITE   RewriteRule mod_pagespeed_statistics /broken
#REWRITE   RewriteRule shortcut.html /mod_pagespeed_example/index.html
</VirtualHost>

# Sets up a logical home-page server on www.example.com
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName www.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedLoadFromFile http://cdn.example.com @@APACHE_DOC_ROOT@@
  ModPagespeedMapRewriteDomain cdn.example.com origin.example.com
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css,rewrite_images
</VirtualHost>

# Sets up a logical origin for CDNs to fetch content from, on origin.example.com.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName origin.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedLoadFromFile http://cdn.example.com @@APACHE_DOC_ROOT@@
  ModPagespeedMapRewriteDomain cdn.example.com origin.example.com
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css,rewrite_images
</VirtualHost>

# Sets up a logical cdn, which is where we tell browsers to fetch resources from.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName cdn.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedLoadFromFile http://cdn.example.com @@APACHE_DOC_ROOT@@
  ModPagespeedMapRewriteDomain cdn.example.com origin.example.com
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css,rewrite_images
</VirtualHost>

# Sets up a virtual host where we can specify forbidden filters without
# affecting any other hosts.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName forbidden.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedBlockingRewriteKey psatest
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  # Start with all core filters enabled ...
  ModPagespeedRewriteLevel CoreFilters
  # ... then forbid these filters ...
  ModPagespeedForbidFilters remove_quotes,remove_comments,collapse_whitespace
  ModPagespeedForbidFilters rewrite_css,resize_images
  # ... and disable but not forbid this one (to ensure we retain its URL).
  ModPagespeedDisableFilters inline_css
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName unauthorizedresources.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedInlineResourcesWithoutExplicitAuthorization Script,Stylesheet
  ModPagespeedCssInlineMaxBytes 1000000
</VirtualHost>

# Sets up a logical home-page server on
# max-cacheable-content-length.example.com.  This server is only used to test
# ModPagespeedMaxCacheableContentLength, i.e.,
# max_cacheable_response_content_length.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName max-cacheable-content-length.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedBlockingRewriteKey psatest
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_javascript
  ModPagespeedMaxCacheableContentLength 85
</VirtualHost>

# Set the value of the X-Mod-Pagespeed header
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName xheader.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedXHeaderValue "UNSPECIFIED VERSION"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName domain-hyperlinks-on.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  # Don't actually try to rewrite any resources; the ones in
  # rewrite_domains.html don't actually exist.
  ModPagespeedRewriteLevel PassThrough

  ModPagespeedDomainRewriteHyperlinks on
  ModPagespeedMapRewriteDomain http://dst.example.com http://src.example.com
  ModPagespeedEnableFilters rewrite_domains
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName domain-hyperlinks-off.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  # Don't actually try to rewrite any resources; the ones in
  # rewrite_domains.html don't actually exist.
  ModPagespeedRewriteLevel PassThrough

  ModPagespeedDomainRewriteHyperlinks off
  ModPagespeedMapRewriteDomain http://dst.example.com http://src.example.com
  ModPagespeedEnableFilters rewrite_domains
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName client-domain-rewrite.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  # Don't actually try to rewrite any resources; the ones in
  # rewrite_domains.html don't actually exist.
  ModPagespeedRewriteLevel PassThrough

  ModPagespeedMapRewriteDomain http://client-domain-rewrite.example.com \
      http://@@APACHE_DOMAIN@@
  ModPagespeedClientDomainRewrite true
  ModPagespeedEnableFilters rewrite_domains
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName url-attribute.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  # Don't actually try to rewrite any resources; the ones in
  # rewrite_domains.html don't actually exist.
  ModPagespeedRewriteLevel PassThrough

  # This is used for testing dynamically defined url-valued
  # attributes
  ModPagespeedUrlValuedAttribute span src Hyperlink
  ModPagespeedUrlValuedAttribute hr imgsrc Image
  ModPagespeedDomainRewriteHyperlinks on
  ModPagespeedMapRewriteDomain http://dst.example.com http://src.example.com
  ModPagespeedEnableFilters rewrite_domains
  ModPagespeedUrlValuedAttribute custom a Image
  ModPagespeedUrlValuedAttribute custom b otherResource
  ModPagespeedUrlValuedAttribute custom c hyperlink
  ModPagespeedUrlValuedAttribute img alt-src Image
  ModPagespeedUrlValuedAttribute video alt-a Image
  ModPagespeedUrlValuedAttribute video alt-b Image
  ModPagespeedUrlValuedAttribute video alt-b Image

  ModPagespeedUrlValuedAttribute link data-stylesheet Stylesheet
  ModPagespeedUrlValuedAttribute span data-stylesheet-a Stylesheet
  ModPagespeedUrlValuedAttribute span data-stylesheet-b Stylesheet
  ModPagespeedUrlValuedAttribute span data-stylesheet-c Stylesheet

  # Also test that we can redefine spec-defined attributes.
  ModPagespeedUrlValuedAttribute blockquote cite Image
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName absolute-urls.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  # This is used for testing that we don't load resources from
  # absolute urls during resource reconstruction unless they're for
  # our own hostname.  While ModPagespeedDomain should no longer
  # have an effect on whether we load absolute urls, we need to
  # include it to be sure we're failing because of the code under
  # test and not because the domain lawyer is rejecting it.
  ModPagespeedDomain http://example.com
</VirtualHost>

<IfModule !proxy_module>
  LoadModule proxy_module @@APACHE_MODULES@@/mod_proxy.so
  LoadModule proxy_http_module @@APACHE_MODULES@@/mod_proxy_http.so
</IfModule>

# Proxy @@PAGESPEED-TEST-HOST@@ for testing Issue 582.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName @@PAGESPEED-TEST-HOST@@

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeed off
  ServerAlias @@PAGESPEED-TEST-HOST@@

  ProxyPass / http://@@PAGESPEED-TEST-HOST@@/
  ProxyPassReverse / http://@@PAGESPEED-TEST-HOST@@/
</VirtualHost>

# The following three VHosts are created for Issue 599.
# Create three sites for a MapProxyDomain experiment. The sites are:
# cdn: forwards requests to proxy.
# proxy: runs MPS, and optimizes data from origin.
# origin: a normal website that is potentially external to proxy.

# The CDN in our example which simply forwards requests to the proxy.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName cdn.pm.example.com

  # Point the docroot somewhere useless so that we know we're not fetching
  # from the CDN's filesystem. Note that in particular we are not attempting to
  # run CGI scripts.
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/cgi"

  # Tell mod_proxy that we need to use a proxy to reach our VirtualHost servers.
  ProxyRemote * http://localhost:@@APACHE_SECONDARY_PORT@@
  ProxyPass /external/ http://proxy.pm.example.com/external/
  ProxyPassReverse /external/ http://proxy.pm.example.com/external/

  # Unplugged so that it passes the .pagespeed. requests through to the proxy.
  ModPagespeed unplugged
</VirtualHost>

# The proxy that runs MPS and can proxy data from origin. When the CDN
# requests proxied data from the proxy the proxy knows to fetch it from the
# origin server.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName proxy.pm.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/"
  # The usual cache location so that it gets cleared for on_cache_flush tests.
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  # We have to fetch through our localhost proxy to get to our other vhosts.
  ModPagespeedFetchProxy "localhost:@@APACHE_SECONDARY_PORT@@"

  # Origin resources should be optimized and hosted on proxy/external but
  # rewritten to cdn/external.
  ModPagespeedDomain proxy.pm.example.com
  ModPagespeedMapProxyDomain proxy.pm.example.com/external \
                             origin.pm.example.com \
                             cdn.pm.example.com/external
  ModPagespeedRewriteLevel CoreFilters
  ModPagespeedRewriteDeadlinePerFlushMs -1
</VirtualHost>

# The origin that serves the images to be proxied (Puzzle.jpg)
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName origin.pm.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/images"
  ModPagespeed unplugged
</VirtualHost>

# For testing setting options by cookies.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName options-by-cookies-enabled.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_optionsbycookieson"
  ModPagespeedAllowOptionsToBeSetByCookies true
  ModPagespeedStickyQueryParameters sticky_secret
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters collapse_whitespace
  ModPagespeedDisableFilters remove_comments,add_instrumentation
</VirtualHost>
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName options-by-cookies-disabled.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_optionsbycookiesoff"
  ModPagespeedAllowOptionsToBeSetByCookies false
  ModPagespeedDisableFilters add_instrumentation
</VirtualHost>

# For testing request option overriding.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName request-option-override.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRequestOptionOverride abc
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters collapse_whitespace
  ModPagespeedDisableFilters remove_comments,add_instrumentation
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT1@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-partially-invalid.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT2@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-invalid.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT3@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-out-of-scope.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT4@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-failed-fetch.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT5@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-slow-fetch.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT6@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-with-htaccess.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName remote-config-experiment.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRemoteConfigurationUrl "http://127.0.0.1:@@RCPORT7@@/remote.cfg"
  ModPagespeedRemoteConfigurationTimeoutMs 1500
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName uses-sendfile.example.com
  ModPagespeedBlockingRewriteKey psatest
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedEnableFilters rewrite_javascript
  Header always set X-Sendfile blablabla
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName uses-xaccelredirect.example.com
  ModPagespeedBlockingRewriteKey psatest
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedEnableFilters rewrite_javascript
  Header always set X-Accel-Redirect blablabla
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName doesnt-sendfile.example.com
  ModPagespeedBlockingRewriteKey psatest
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedEnableFilters rewrite_javascript
</VirtualHost>

# For testing ipro + load from file + unknown extensions.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName lff-ipro.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedLoadFromFile \
   "http://lff-ipro.example.com/mod_pagespeed_test/lff_ipro" \
   "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/lff_ipro"
</VirtualHost>

# For testing signed urls.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName signed-urls.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedUrlSigningKey helloworld
  ModPagespeedRewriteLevel PassThrough
</VirtualHost>

# For testing signed urls, ignoring signature validity.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName signed-urls-transition.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedUrlSigningKey helloworld
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedAcceptInvalidSignatures true
</VirtualHost>
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName unsigned-urls-transition.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  # This server will not sign URLs, but AcceptInvalidSignatures is on.
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedAcceptInvalidSignatures true
</VirtualHost>

# For testing handling of redirected requests.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName redirect.example.com
  Redirect /redirect/ /
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters add_instrumentation,collapse_whitespace
</VirtualHost>

# Proxy + IPRO a gzip'd file for testing Issue 896.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ipro-proxy.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_ipro_proxy"

  ModPagespeed on
  ModPagespeedInPlaceResourceOptimization on
  ModPagespeedEnableFilters rewrite_domains

  ProxyPass / http://localhost:@@APACHE_TERTIARY_PORT@@/mod_pagespeed_test/ipro/mod_deflate/
  ProxyPassReverse / http://localhost:@@APACHE_TERTIARY_PORT@@/mod_pagespeed_test/ipro/mod_deflate/
  AddOutputFilterByType DEFLATE text/css
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName compressedcache.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeed on
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css
  ModPagespeedHttpCacheCompressionLevel 9
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName uncompressedcache.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeed on
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css
  ModPagespeedHttpCacheCompressionLevel 0
  AddOutputFilterByType DEFLATE text/css
  DeflateCompressionLevel 1
</VirtualHost>

# Backend for ipro-proxy.example.com
Listen 127.0.0.1:@@APACHE_TERTIARY_PORT@@
NameVirtualHost 127.0.0.1:@@APACHE_TERTIARY_PORT@@
<VirtualHost 127.0.0.1:@@APACHE_TERTIARY_PORT@@>
  ServerName ipro-proxy-backend.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeed unplugged
  AddOutputFilterByType DEFLATE text/css
</VirtualHost>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/instant/wait/" >
    ModPagespeedInPlaceWaitForOptimized on

    # Make the deadline long here for valgrind tests.  We could
    # conditionalize this.
    ModPagespeedInPlaceRewriteDeadlineMs 20000
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/wait/" >
    # TODO(jmarantz): ModPagespeedInPlaceWaitForOptimized should be superfluous,
    # or made equivalent to ModPagespeedInPlaceRewriteDeadlineMs -1, which waits
    # forever.  Otherwise ModPagespeedInPlaceRewriteDeadlineMs should just have
    # the specified deadline.
    # # See https://github.com/pagespeed/mod_pagespeed/issues/1171 for more
    # detailed discussion.
    ModPagespeedInPlaceWaitForOptimized on
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/wait/long/" >
    # Make the deadline long here for valgrind tests.  We could
    # conditionalize this.
    ModPagespeedInPlaceRewriteDeadlineMs 10000
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/wait/short/" >
    ModPagespeedEnableFilters in_place_optimize_for_browser

    # Make the deadline short here as we expect to always miss it
    # in tests.
    ModPagespeedInPlaceRewriteDeadlineMs 1
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/ipro/instant/deadline/" >
    ModPagespeedInPlaceRewriteDeadlineMs -1
</Directory>

# Test to make sure that user-authenticated resources do not get cached and
# optimized.
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/auth" >
  AllowOverride AuthConfig
  AuthType Basic
  AuthName "Restricted Files"
  AuthBasicProvider file
  AuthUserFile @@APACHE_DOC_ROOT@@/mod_pagespeed_test/auth/passwd.conf
  Require user user1
</Directory>

# Enable per-vhost statistics so that tests can be somewhat independent.
ModPagespeedUsePerVHostStatistics on
<Location /mod_pagespeed_global_statistics>
  Order allow,deny
  Allow from localhost
  Allow from 127.0.0.1
  SetHandler mod_pagespeed_global_statistics
</Location>

# Declare legacy handlers.  The modern one is declared in
# pagespeed.conf.template, which handles all these functions, but
# these are declared so we can test that the handlers still work so
# that people upgrading to a new release don't lose funcitonality.
<Location /mod_pagespeed_statistics>
    Order allow,deny
    # You may insert other "Allow from" lines to add hosts you want to
    # allow to look at generated statistics.  Another possibility is
    # to comment out the "Order" and "Allow" options from the config
    # file, to allow any client that can reach your server to examine
    # statistics.  This might be appropriate in an experimental setup or
    # if the Apache server is protected by a reverse proxy that will
    # filter URLs in some fashion.
    Allow from localhost
    Allow from 127.0.0.1
    SetHandler mod_pagespeed_statistics
</Location>
<Location /pagespeed_console>
    Order allow,deny
    Allow from localhost
    Allow from 127.0.0.1
    SetHandler pagespeed_console
</Location>
<Location /mod_pagespeed_message>
    Order allow,deny
    Allow from localhost
    Allow from 127.0.0.1
    SetHandler mod_pagespeed_message
</Location>

# The handler for "pagespeed_admin" is fixed in name, but you can put
# it on any URL path, and everything should work.
<Location /alt/admin/path>
    Order allow,deny
    Allow from localhost
    Allow from 127.0.0.1
    SetHandler pagespeed_admin
</Location>

# Use a separate vhost so that statistics are separate.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ipro.example.com

  ModPagespeedInPlaceResourceOptimization on
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

# Setup a vhost with the critical image beacon and lazyload filter enabled to
# make sure that critical images are not lazyloaded.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName imagebeacon.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters lazyload_images
  ModPagespeedCriticalImagesBeaconEnabled true

  # add_instrumentation tests beacon handling with no handler specified, while
  # here we test it with a handler (that should do nothing).
  <Location /mod_pagespeed_beacon>
    SetHandler mod_pagespeed_beacon
  </Location>
</VirtualHost>

# The downstreamcacherebeacon vhost setup in the below section is used in
# apache system tests to make sure that downstream caching and rebeaconing
# interact correctly.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName downstreamcacherebeacon.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedCriticalImagesBeaconEnabled true

  # Enable the downstream caching feature and specify a rebeaconing key.
  ModPagespeedDownstreamCachePurgeLocationPrefix "http://localhost:8020"
  ModPagespeedDownstreamCachePurgeMethod "PURGE"
  ModPagespeedDownstreamCacheRebeaconingKey random_rebeaconing_key

  Header set Cache-Control "private, max-age=3000"
</VirtualHost>

# The cachable_rewritten_html path is configured for testing from within
# apache_downstream_caching_test.sh since that cannot work with a Vhost for
# the mod_pagespeed part of the test.
<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/cachable_rewritten_html" >
  ModPagespeedRewriteDeadlinePerFlushMs 1

  ModPagespeedRewriteLevel PassThrough
  ModPagespeedCriticalImagesBeaconEnabled true
  ModPagespeedEnableFilters collapse_whitespace,extend_cache,recompress_images

  # Assume that Varnish (or any other downstream cache) is running at
  # localhost:8020.
  # Enable the downstream caching feature and specify a rebeaconing key.
  ModPagespeedDownstreamCachePurgeLocationPrefix "http://localhost:8020"
  ModPagespeedDownstreamCachePurgeMethod "PURGE"
  ModPagespeedDownstreamCacheRebeaconingKey random_rebeaconing_key
</Directory>

<Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/public" >
  Header set Cache-control "public,max-age=600"
  ModPagespeedPreserveUrlRelativity off
</Directory>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName downstreamcacheresource.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_images
  ModPagespeedDownstreamCachePurgeLocationPrefix \
    "http://localhost:@@APACHE_SECONDARY_PORT@@/purge"
</VirtualHost>

# Set up a reverse proxy (rproxy.) and origin (origin.) as vhosts for
# showing that we can configure PageSpeed via response headers.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName rproxy.rmcomments.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedDisableFilters add_instrumentation,remove_comments
  # Note that we don't enable remove_comments here; that setting comes from
  # the response headers from origin.rmcomments.example.com
  ProxyRemote * http://localhost:@@APACHE_SECONDARY_PORT@@
  ProxyPass / http://origin.rmcomments.example.com/
  ProxyPassReverse / http://origin.rmcomments.example.com/
</VirtualHost>
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName origin.rmcomments.example.com
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeed unplugged
  Header add PageSpeedFilters remove_comments
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName renderedimagebeacon.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters resize_rendered_image_dimensions
  ModPagespeedCriticalImagesBeaconEnabled true

  # add_instrumentation tests beacon handling with no handler specified, while
  # here we test it with a handler (that should do nothing).
  <Location /mod_pagespeed_beacon>
    SetHandler mod_pagespeed_beacon
  </Location>
</VirtualHost>

# Test host for explicit shared memory cache.
ModPagespeedCreateSharedMemoryMetadataCache "@@MOD_PAGESPEED_CACHE@@_with_shm" 8192
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName shmcache.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@_with_shm"

  ModPagespeedEnableFilters rewrite_images
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>


# Test hosts to cover all possible cache configurations.  L1 will be filecache
# or memcache depending on the setting of MEMCACHED_TEST.  These four hosts are
# for the four settings for the L2 cache.

# 1. L2_d=LRU, L2_m=LRU
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName lrud-lrum.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@_lrud_lrum"
#MEMCACHED  ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@

  ModPagespeedLRUCacheKbPerProcess 1024
  ModPagespeedLRUCacheByteLimit 2000
  ModPagespeedEnableFilters rewrite_images
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>

ModPagespeedCreateSharedMemoryMetadataCache "@@MOD_PAGESPEED_CACHE@@_lrud_shmm" 8192
# 2. L2_d=LRU, L2_m=SHM
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName lrud-shmm.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@_lrud_shmm"
#MEMCACHED  ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@

  ModPagespeedLRUCacheKbPerProcess 1024
  ModPagespeedLRUCacheByteLimit 2000
  ModPagespeedEnableFilters rewrite_images
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>

ModPagespeedCreateSharedMemoryMetadataCache "@@MOD_PAGESPEED_CACHE@@_noned_shmm" 8192
# 3. L2_d=none, L2_m=SHM
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName noned-shmm.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@_noned_shmm"
#MEMCACHED  ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@

  ModPagespeedEnableFilters rewrite_images
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>

# 4. L2_d=none, L2_m=none
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName noned-nonem.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@_noned_nonem"
#MEMCACHED  ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@

  ModPagespeedEnableFilters rewrite_images
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>

# Test host for issue 809: losing extra headers with cache-control set early.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName issue809.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@"

  header add Issue809 Issue809Value
  header add Cache-Control max-age=60 early

  # The tests using this vhost scan for css-combine URLs and will not find
  # them if the combined css file is then css-minified.  So we explicitly
  # disable these and other distracting filters for easy output scanning.
  #
  # It is less effective to rely on 'level passthrough' because we might
  # still inherit explicitly-enabled filters from the root configuration in
  # some passes through system_test.sh.
  ModPagespeedDisableFilters rewrite_css,add_instrumentation,flatten_css_imports
  ModPagespeedEnableFilters rewrite_images,combine_css
  ModPagespeedCriticalImagesBeaconEnabled false
  ModPagespeedModifyCachingHeaders on
</VirtualHost>

# Build a configuration hierarchy where at the root we have turned on
# OptimizeForBandwidth, and in various subdirectories we override settings
# to make them more aggressive.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName optimizeforbandwidth.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedRewriteLevel OptimizeForBandwidth
  ModPagespeedDisableFilters add_instrumentation

  ModPagespeedBlockingRewriteKey psatest

  <Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/optimize_for_bandwidth/inline_css" >
    ModPagespeedEnableFilters inline_css
  </Directory>
  <Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/optimize_for_bandwidth/css_urls" >
    ModPagespeedCssPreserveURLs off
  </Directory>
  <Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/optimize_for_bandwidth/image_urls" >
    ModPagespeedImagePreserveURLs off
  </Directory>
  <Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/optimize_for_bandwidth/core_filters" >
    ModPagespeedRewriteLevel CoreFilters
  </Directory>
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName respectvary.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedRespectVary on
  Header append Vary User-Agent
</VirtualHost>

#PER_VHOST_STATS ModPagespeedUsePerVHostStatistics on
#PER_VHOST_STATS # Make sure we behave OK with this on, too.
#PER_VHOST_STATS ModPagespeedFetchWithGzip on
#NO_PER_VHOST_STATS # Overrides "ModPagespeedUsePerVHostStatistics on" above.
#NO_PER_VHOST_STATS ModPagespeedUsePerVHostStatistics off

# TODO(sligocki): Get rid of this once this is integrated into console.
<Location /mod_pagespeed_temp_statistics_graphs>
    SetHandler mod_pagespeed_temp_statistics_graphs
</Location>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName purge.example.com

  # Test purging individual URLs without flushing the entire metadata cache.
  ModPagespeedEnableCachePurge on

  ModPagespeedPurgeMethod PURGE
  DocumentRoot "@@APACHE_DOC_ROOT@@/purge"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_purge"
  ModPagespeedDisableFilters add_instrumentation
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css
</VirtualHost>

# For testing ModPagespeed off, but with a directory-scope turning it
# back on.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName psoff-dir-on.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@/purge"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_mpsoff_dir_on"
  ModPagespeed off
  ModPagespeedEnableCachePurge on
  ModPagespeedPurgeMethod PURGE
  ModPagespeedDisableFilters add_instrumentation
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css
  <Directory "@@APACHE_DOC_ROOT@@/purge">
    ModPagespeed on
  </Directory>
</VirtualHost>

# For testing ModPagespeed off, but with an htaccess turning it
# back on.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName psoff-htaccess-on.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@/purge"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_mpsoff_htaccess_on"
  ModPagespeed off
  ModPagespeedEnableCachePurge on
  ModPagespeedPurgeMethod PURGE
  ModPagespeedDisableFilters add_instrumentation
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_css
  <Directory "@@APACHE_DOC_ROOT@@/purge">
    AllowOverride All
  </Directory>
</VirtualHost>

ModPagespeedMessagesDomains Allow messages-allowed.example.com
ModPagespeedMessagesDomains Allow cleared-inherited.example.com
ModPagespeedMessagesDomains Allow cleared-inherited-reallowed.example.com
ModPagespeedMessagesDomains Allow more-messages-allowed.example.com
ModPagespeedMessagesDomains Allow anything-*-wildcard.example.com
ModPagespeedMessagesDomains Allow localhost

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName messages-allowed.example.com
  ServerAlias messages-not-allowed.example.com
  ServerAlias more-messages-allowed.example.com
  ServerAlias anything-a-wildcard.example.com
  ServerAlias anything-b-wildcard.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName messages-still-not-allowed.example.com
  ServerAlias but-this-message-allowed.example.com
  ServerAlias and-this-one.example.com
  ModPagespeedMessagesDomains Allow but-this-message-allowed.example.com
  ModPagespeedMessagesDomains Allow and-this-one.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName cleared-inherited.example.com
  ServerAlias cleared-inherited-reallowed.example.com
  ServerAlias messages-allowed-at-vhost.example.com
  ServerAlias messages-not-allowed-at-vhost.example.com
  ServerAlias anything-c-wildcard.example.com
  ModPagespeedMessagesDomains Disallow *
  ModPagespeedMessagesDomains Allow cleared-inherited-reallowed.example.com
  ModPagespeedMessagesDomains Allow messages-allowed-at-vhost.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName cleared-inherited-unlisted.example.com

  ModPagespeedMessagesDomains Allow *
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName nothing-allowed.example.com
  ModPagespeedMessagesDomains Disallow *
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName nothing-explicitly-allowed.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName everything-explicitly-allowed.example.com
  ServerAlias everything-explicitly-allowed-but-aliased.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedStatisticsDomains Allow everything-explicitly-allowed.example.com
  ModPagespeedGlobalStatisticsDomains \
    Allow everything-explicitly-allowed.example.com
  ModPagespeedMessagesDomains Allow everything-explicitly-allowed.example.com
  ModPagespeedConsoleDomains Allow everything-explicitly-allowed.example.com
  ModPagespeedAdminDomains Allow everything-explicitly-allowed.example.com
  ModPagespeedGlobalAdminDomains Allow everything-explicitly-allowed.example.com
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName debug-filters.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters debug
</VirtualHost>

#STATS_LOGGING ModPagespeedStatistics on
#STATS_LOGGING ModPagespeedStatisticsLogging on
#STATS_LOGGING ModPagespeedLogDir "@@MOD_PAGESPEED_LOG@@"
#STATS_LOGGING ModPagespeedStatisticsLoggingIntervalMs 10

#SPELING # Enable mod_speling to ensure that we don't regress Issue 194
#SPELING <IfModule !speling_module>
#SPELING   LoadModule speling_module  @@APACHE_MODULES@@/mod_speling.so
#SPELING </IfModule>
#SPELING CheckSpelling on

#GZIP ModPagespeedFetchWithGzip on
#GZIP SetOutputFilter DEFLATE

#STRESS # These lines are only needed for the stress test.
#STRESS <Directory "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/cgi" >
#STRESS   Options +ExecCGI
#STRESS </Directory>
#STRESS AddHandler cgi-script .cgi
#STRESS <IfVersion >= 2.4.2>
#STRESS   <IfModule !slotmem_shm_module>
#STRESS     LoadModule slotmem_shm_module @@APACHE_MODULES@@/mod_slotmem_shm.so
#STRESS   </IfModule>
#STRESS </IfVersion>

# Globally set the message-buffer size during load-tests.
#
# TODO(jmarantz): add a test-path where we set this in a VirtualHost and
# make sure the right error message comes out.
#LOADTEST # Don't want global slurp inheriting into :8080
#LOADTEST ModPagespeedInheritVHostConfig off
#LOADTEST ModPagespeedMessageBufferSize 100000
#LOADTEST
#LOADTEST # We want backtraces to be dumped during the load test, as
#LOADTEST # one of its purposes is to discover crash bugs.
#LOADTEST ModPagespeedInstallCrashHandler on
#LOADTEST
#LOADTEST # These lines are used for large-scale code coverage testing.
#LOADTEST # We use 2 servers for it, one doing rewriting and fetching
#LOADTEST # from the other one, which plays back slurps
#LOADTEST Listen 8081
#LOADTEST <VirtualHost *:8080>
#LOADTEST   ModPagespeed on
#LOADTEST   # Proxy using SERF
#LOADTEST   ModPagespeedTestProxy on
#LOADTEST   ModPagespeedFetchProxy "127.0.0.1:8081"
#IPRO_PRESERVE_LOADTEST ModPagespeedInPlaceResourceOptimization on
#IPRO_PRESERVE_LOADTEST ModPagespeedInPlaceWaitForOptimized on
#IPRO_PRESERVE_LOADTEST ModPagespeedCssPreserveURLs on
#IPRO_PRESERVE_LOADTEST ModPagespeedImagePreserveURLs on
#IPRO_PRESERVE_LOADTEST ModPagespeedJsPreserveURLS on
#LOADTEST
#MEMCACHE_LOADTEST   ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@
#PURGING_LOADTEST    ModPagespeedEnableCachePurge on
#PURGING_LOADTEST    ModPagespeedCompressMetadataCache on
#LOADTEST   ModPagespeedFileCachePath       "@@MOD_PAGESPEED_CACHE@@_load_test"
#LOADTEST   ModPagespeedCompressMetadataCache true
#LOADTEST   ModPagespeedRewriteLevel AllFilters
#IPRO_PRESERVE_LOADTEST   ModPagespeedRewriteLevel OptimizeForBandwidth
#IPRO_PRESERVE_LOADTEST   ModPagespeedDisableFilters add_instrumentation
#IPRO_PRESERVE_LOADTEST   ModPagespeedDisableFilters local_storage_cache,debug
#IPRO_PRESERVE_LOADTEST   ModPagespeedDisableFilters lazyload_images
#IPRO_PRESERVE_LOADTEST   ModPagespeedDisableFilters add_base_tag
#IPRO_PRESERVE_LOADTEST   ModPagespeedDisableFilters dedup_inlined_images
#IPRO_PRESERVE_LOADTEST   ModPagespeedDisableFilters convert_jpeg_to_webp
#IPRO_PRESERVE_LOADTEST   ModPagespeedInPlaceRewriteDeadlineMs 1000
#IPRO_PRESERVE_LOADTEST
#IPRO_PRESERVE_LOADTEST   # We turn preemptive rewriting off for bandwidth
#IPRO_PRESERVE_LOADTEST   # tests driven by recursive wget, where the image
#IPRO_PRESERVE_LOADTEST   # requests will come too quickly to allow any
#IPRO_PRESERVE_LOADTEST   # image rewrites to finish.  Leaving preemptive
#IPRO_PRESERVE_LOADTEST   # rewrites enabled causes redundant image rewrites
#IPRO_PRESERVE_LOADTEST   # to occur.
#IPRO_PRESERVE_LOADTEST   ModPagespeedInPlacePreemptiveRewriteImages off
#IPRO_PRESERVE_LOADTEST   ModPagespeedInPlacePreemptiveRewriteCss off
#IPRO_PRESERVE_LOADTEST   ModPagespeedInPlacePreemptiveRewriteCssImages off
#IPRO_PRESERVE_LOADTEST   ModPagespeedInPlacePreemptiveRewriteJavascript off
#LOADTEST
#LOADTEST   # flush_subsresources doesn't work in MPS but disables
#LOADTEST   # combine_css and combine_javascript, so we don't want to
#LOADTEST   # load-test it.
#LOADTEST   ModPagespeedDisableFilters flush_subresources
#LOADTEST   ModPagespeedEnableFilters elide_attributes
#DOMAIN_AUTH_LOADTEST   ModPagespeedDomain *
#IUR_LOADTEST ModPagespeedInlineResourcesWithoutExplicitAuthorization Script,Stylesheet
#LOADTEST   ModPagespeedFileCacheSizeKb             1024000
#LOADTEST   ModPagespeedFileCacheCleanIntervalMs     120000
#LOADTEST   ModPagespeedLRUCacheKbPerProcess           1024
#LOADTEST   ModPagespeedLRUCacheByteLimit             16384
#LOADTEST   ModPagespeedCssFlattenMaxBytes           102400
#LOADTEST   ModPagespeedCssInlineMaxBytes              2048
#LOADTEST   ModPagespeedCssImageInlineMaxBytes            0
#LOADTEST   ModPagespeedImageInlineMaxBytes            3072
#LOADTEST   ModPagespeedMaxInlinedPreviewImagesIndex     -1
#LOADTEST   ModPagespeedMinImageSizeLowResolutionBytes 3072
#LOADTEST   ModPagespeedJsInlineMaxBytes               2048
#LOADTEST   ModPagespeedCssOutlineMinBytes             3000
#LOADTEST   ModPagespeedJsOutlineMinBytes              3000
#LOADTEST   ModPagespeedImageMaxRewritesAtOnce            8
#LOADTEST   ModPagespeedSlurpFlushLimit                8192
#LOADTEST   ModPagespeedJpegRecompressionQuality         -1
#LOADTEST   ModPagespeedImageLimitOptimizedPercent      100
#LOADTEST   ModPagespeedImageLimitResizeAreaPercent     100
#LOADTEST
#LOADTEST   # Enabling beacons is not interesting in our current
#LOADTEST   # load-test framework as the load-tester doesn't run JS
#LOADTEST   # and thus can't send back any beacons.  This means we
#LOADTEST   # won't be able to test inline images, since we don't know
#LOADTEST   # which images are critical.  Better to turn it off.
#LOADTEST   # TODO(jud): Load-test the critical images beacon in a
#LOADTEST   # context that sends back beacons.
#LOADTEST   ModPagespeedCriticalImagesBeaconEnabled false
#LOADTEST
#LOADTEST   <Location /mod_pagespeed_statistics>
#LOADTEST       Order allow,deny
#LOADTEST       Allow from localhost
#LOADTEST       SetHandler mod_pagespeed_statistics
#LOADTEST   </Location>
#LOADTEST    <Location /mod_pagespeed_message>
#LOADTEST        Allow from localhost
#LOADTEST        Allow from 127.0.0.1
#LOADTEST        SetHandler mod_pagespeed_message
#LOADTEST    </Location>
#LOADTEST </VirtualHost>
#LOADTEST
#LOADTEST <VirtualHost *:8081>
#LOADTEST   ModPagespeed on
#LOADTEST
#LOADTEST   ModPagespeedFileCachePath            "@@MOD_PAGESPEED_CACHE@@-alt"
#LOADTEST   ModPagespeedRewriteLevel PassThrough
#LOADTEST   ModPagespeedInPlaceResourceOptimization off
#LOADTEST
#LOADTEST   # ModPagespeedSlurpDirectory ...
#LOADTEST   # ModPagespeedSlurpReadOnly on
#LOADTEST
#LOADTEST   <Location /mod_pagespeed_message>
#LOADTEST        Allow from localhost
#LOADTEST        Allow from 127.0.0.1
#LOADTEST        SetHandler mod_pagespeed_message
#LOADTEST   </Location>
#LOADTEST </VirtualHost>


#PROXY # This is used for ProxyPass testing.
#PROXY #   See: http://code.google.com/p/modpagespeed/issues/detail?id=74
#PROXY # We use 2 servers for it, one doing rewriting and fetching
#PROXY # from the other one which does not have mod_pagespeed enabled.
#PROXY Listen 8081
#PROXY <VirtualHost *:8080>
#PROXY   # Host at 8080 should have no relevant content.
#PROXY   DocumentRoot  /tmp/
#PROXY
#PROXY   # Turn these declarations back on during testing if you are
#PROXY   # having trouble distinguishing which server is saying what.
#PROXY   #ErrorLog   "@@MOD_PAGESPEED_CACHE@@logs/error_log"
#PROXY   #CustomLog  "@@MOD_PAGESPEED_CACHE@@logs/access_log" common
#PROXY
#PROXY   ModPagespeed on
#PROXY
#PROXY   ModPagespeedFileCachePath         "@@MOD_PAGESPEED_CACHE@@"
#PROXY
#PROXY   ModPagespeedRewriteLevel PassThrough
#PROXY   ModPagespeedEnableFilters extend_cache
#PROXY   ModPagespeedDomain *
#PROXY
#PROXY   # Test depends upon URLs being absolutified.
#PROXY   ModPagespeedPreserveUrlRelativity off
#PROXY
#PROXY   # Proxy through to 8081.
#PROXY   ProxyPass / http://localhost:8081/
#PROXY </VirtualHost>
#PROXY
#PROXY <VirtualHost *:8081>
#PROXY   # Host at 8081 sees into mod_pagespeed_examples directory.
#PROXY   DocumentRoot  "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/"
#PROXY
#PROXY   #ErrorLog   "@@MOD_PAGESPEED_CACHE@@-alt/logs/error_log"
#PROXY   #CustomLog  "@@MOD_PAGESPEED_CACHE@@-alt/logs/access_log" common
#PROXY
#PROXY   ModPagespeed off
#PROXY   ModPagespeedFileCachePath        "@@MOD_PAGESPEED_CACHE@@-alt"
#PROXY   ModPagespeedRewriteLevel PassThrough
#PROXY </VirtualHost>

#SLURP # This is used for Slurp testing.  The initial slurp testing
#SLURP # uses a slurp test dir pre-populated from source control,
#SLURP # via a read-only slurp setup on port 8080.  We also test slurp
#SLURP # writing via an origin server on port 8081, and a slurp server
#SLURP # on 8082 with slurping read-only off.
#SLURP Listen 8081
#SLURP Listen 8082
#SLURP <VirtualHost *:8080>
#SLURP   ModPagespeedFileCachePath        "@@MOD_PAGESPEED_CACHE@@"
#SLURP   ModPagespeedSlurpDirectory "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/slurp"
#SLURP   ModPagespeedSlurpReadOnly on
#SLURP </VirtualHost>
#SLURP <VirtualHost *:8081>
#SLURP   # Host at 8081 sees into mod_pagespeed_examples directory.
#SLURP   DocumentRoot  "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/"
#SLURP
#SLURP   ModPagespeed off
#SLURP   ModPagespeedFileCachePath        "@@MOD_PAGESPEED_CACHE@@-alt"
#SLURP   ModPagespeedRewriteLevel PassThrough
#SLURP </VirtualHost>
#SLURP <VirtualHost *:8082>
#SLURP   ModPagespeedFileCachePath        "@@MOD_PAGESPEED_CACHE@@-alt2"
#SLURP   ModPagespeedSlurpDirectory @@TMP_SLURP_DIR@@
#SLURP   ModPagespeedSlurpReadOnly off
#SLURP   ModPagespeedDomain *
#SLURP   ModPagespeedMaxHtmlParseBytes 1000000
#SLURP   ModPagespeedSlurpFlushLimit     10000
#SLURP </VirtualHost>

#SHARED_MEM_LOCKS ModPagespeedSharedMemoryLocks on

#HTTPS # This is used for testing https requests.
#HTTPS <IfVersion >= 2.4>
#HTTPS   <IfModule !socache_shmcb_module>
#HTTPS     LoadModule socache_shmcb_module @@APACHE_MODULES@@/mod_socache_shmcb.so
#HTTPS   </IfModule>
#HTTPS   <IfModule !slotmem_shm_module>
#HTTPS     LoadModule slotmem_shm_module @@APACHE_MODULES@@/mod_slotmem_shm.so
#HTTPS   </IfModule>
#HTTPS </IfVersion>

#HTTPS Include conf/extra/httpd-ssl.conf
#HTTPS <IfModule !ssl_module>
#HTTPS   LoadModule ssl_module @@APACHE_MODULES@@/mod_ssl.so
#HTTPS </IfModule>
#HTTPS SSLRandomSeed startup builtin
#HTTPS SSLRandomSeed connect builtin
#HTTPS ModPagespeedMapOriginDomain http://@@APACHE_DOMAIN@@ https://@@APACHE_HTTPS_DOMAIN@@

#EXPERIMENT_GA # This is used for testing the experiment framework.
#EXPERIMENT_GA ModPagespeedRunExperiment on
#EXPERIMENT_GA ModPagespeedAnalyticsID "123-45-6734"
#EXPERIMENT_GA ModPagespeedUseAnalyticsJs false
#EXPERIMENT_GA ModPagespeedExperimentVariable 2
#EXPERIMENT_GA ModPagespeedExperimentSpec "id=7;enable=recompress_images,rewrite_javascript;disable=convert_jpeg_to_progressive;percent=50;options=AvoidRenamingIntrospectiveJavascript=off,JsInlineMaxBytes=4"
#EXPERIMENT_GA ModPagespeedExperimentSpec "id=2;enable=recompress_images,rewrite_javascript;percent=50;options=AvoidRenamingIntrospectiveJavascript=on"
#EXPERIMENT_GA ModPagespeedExperimentSpec "id=3;default;percent=0"

#EXPERIMENT_NO_GA # This is used for testing the experiment framework still
#EXPERIMENT_NO_GA # works when no analytics ID is specified.  It should assign
#EXPERIMENT_NO_GA # users to experiments and use appropriate experimental
#EXPERIMENT_NO_GA # options but not report back to Google Analytics.  The
#EXPERIMENT_NO_GA # instrumentation beacon, however, will still contain the
#EXPERIMENT_NO_GA # experiment id.
#EXPERIMENT_NO_GA ModPagespeedRunExperiment on
#EXPERIMENT_NO_GA ModPagespeedExperimentVariable 2
#EXPERIMENT_NO_GA ModPagespeedExperimentSpec "id=7;enable=recompress_images,rewrite_javascript;disable=convert_jpeg_to_progressive;percent=50;options=AvoidRenamingIntrospectiveJavascript=off,JsInlineMaxBytes=4;invalid=this-should-print-a-warning"
#EXPERIMENT_NO_GA ModPagespeedExperimentSpec "id=2;enable=recompress_images,rewrite_javascript;percent=50;options=AvoidRenamingIntrospectiveJavascript=on"
#EXPERIMENT_NO_GA ModPagespeedExperimentSpec "id=3;default;percent=0"

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName experiment.devicematch.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedRewriteLevel PassThrough

  ModPagespeedRunExperiment on
  ModPagespeedUseAnalyticsJs false
  ModPagespeedExperimentSpec "id=1;percent=100;matches_device_type=mobile;enable=recompress_images"
</VirtualHost>

# Support for embedded configurations, where image flags in the
# VirtualHost serving HTML is not the same as the one serving resources,
# and thus we must embed the image flags in the rewritten image URLs.
#
# Note that we test with two distinct caches.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName embed-config-html.example.org

  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_test"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedAddOptionsToUrls on
  ModPagespeedJpegRecompressionQuality 73
  ModPagespeedDisableFilters inline_css,extend_cache,inline_javascript
  ModPagespeedDomain embed-config-resources.example.com

  # Share a cache keyspace with embed-config-resources.example.com.
  ModPagespeedCacheFragment "embed-config"

  ModPagespeedLoadFromFile "http://embed-config-resources.example.com/" \
      "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName embed-config-resources.example.com

  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_example"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@"

  ModPagespeedAddOptionsToUrls on
  # Note that we do not set the jpeg quality here, but take
  # it from image URL query parameters that we synthesize in
  # from embed-config-html.example.com.

  # Share a cache keyspace with embed-config-html.example.org.
  ModPagespeedCacheFragment "embed-config"

  ModPagespeedLoadFromFile "http://embed-config-resources.example.com/" \
      "@@APACHE_DOC_ROOT@@/mod_pagespeed_example/"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ipro-for-browser.example.com
  ModPagespeedEnableFilters rewrite_images,rewrite_css
  ModPagespeedEnableFilters convert_to_webp_lossless
  ModPagespeedEnableFilters in_place_optimize_for_browser
  ModPagespeedJpegRecompressionQuality 75
  ModPagespeedWebpRecompressionQuality 70
  ModPagespeedInPlaceResourceOptimization on
  ModPagespeedAllowVaryOn "Accept"
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_example"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_ipro_for_browser"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ipro-for-browser-vary-on-auto.example.com
  ModPagespeedEnableFilters rewrite_images,rewrite_css
  ModPagespeedEnableFilters convert_to_webp_lossless
  ModPagespeedEnableFilters convert_to_webp_animated
  ModPagespeedEnableFilters in_place_optimize_for_browser
  ModPagespeedInPlaceResourceOptimization on
  # ModPagespeedAllowVaryOn "Auto" # Default is "Auto"
  ModPagespeedImageRecompressionQuality 90
  ModPagespeedJpegRecompressionQuality 75
  ModPagespeedJpegRecompressionQualityForSmallScreens 55
  ModPagespeedJpegQualityForSaveData 35
  ModPagespeedWebpRecompressionQuality 70
  ModPagespeedWebpRecompressionQualityForSmallScreens 50
  ModPagespeedWebpQualityForSaveData 30
  ModPagespeedWebpAnimatedRecompressionQuality 60
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_example"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_ipro_for_browser"
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ipro-for-browser-vary-on-none.example.com
  ModPagespeedEnableFilters rewrite_images,in_place_optimize_for_browser
  ModPagespeedInPlaceResourceOptimization on
  ModPagespeedAllowVaryOn "None"
  ModPagespeedImageRecompressionQuality 75
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_example"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_ipro_for_browser"
</VirtualHost>

# For testing Modpagespeed unplugged.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName mpsunplugged.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeed unplugged
</VirtualHost>

# For testing Modpagespeed off.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName mpsoff.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_mpsoff"
  ModPagespeed off
</VirtualHost>

# For testing how we handle process-scope options.
ModPagespeedIproMaxResponseBytes 1048576001
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ps1.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_mpr"
  ModPagespeedIproMaxResponseBytes 1048576002
  ModPagespeedEnableFilters debug
</VirtualHost>

<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName ps2.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_mpr"
  ModPagespeedIproMaxResponseBytes 1048576003
  ModPagespeedEnableFilters debug
</VirtualHost>

# For testing with a custom origin header.  In this VirtualHost,
# /mod_pagespeed_test is included in our DocumentRoot and thus does
# not need to be in any resource URL paths.  This helps us verify that
# we are looping back to the corect VirtualHost -- if we hit the wrong
# one it will not work.  Also we don't have a VirtualHost for
# sharedcdn.example.com, so the default Host header used for
# origin-mapping won't work either.  Instead, we want origin-fetches
# to go back to this VirtualHost so we rely on the new third optional
# argument to MapOriginDomain.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName customhostheader.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_test"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_test"
  ModPagespeed on
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedEnableFilters rewrite_images
  ModPagespeedMapOriginDomain \
      localhost:@@APACHE_SECONDARY_PORT@@/customhostheader \
      sharedcdn.example.com/test \
      customhostheader.example.com
  ModPagespeedJpegRecompressionQuality 50
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>

# Help tests detect whether mod_spdy is loaded. Only sees it if it's loaded
# before us, unfortunately, but we can at least make it so during our own
# testing.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName spdy.example.com
  <IfModule !spdy_module>
    DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/nonspdy"
  </IfModule>
  <IfModule spdy_module>
    DocumentRoot "@@APACHE_DOC_ROOT@@/mod_pagespeed_test/spdy"
  </IfModule>
</VirtualHost>

# For testing fetching via mod_spdy.
NameVirtualHost @@APACHE_HTTPS_DOMAIN@@
<VirtualHost @@APACHE_HTTPS_DOMAIN@@>
  ServerName spdyfetch.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_spdyfetch"
  ModPagespeed on
  ModPagespeedFetchFromModSpdy on
</VirtualHost>

<VirtualHost @@APACHE_HTTPS_DOMAIN@@>
  ServerName nospdyfetch.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_nospdyfetch"
  ModPagespeed on
  ModPagespeedFetchFromModSpdy off
</VirtualHost>

# For testing where we do our loopback routing. Note that this is listening
# on an unusual loopback IP.
Listen 127.0.0.2:@@APACHE_TERTIARY_PORT@@
<VirtualHost 127.0.0.2:@@APACHE_TERTIARY_PORT@@>
  ServerName loopbackfetch.example.com
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_loopbackfetch"
  ModPagespeedCriticalImagesBeaconEnabled false
</VirtualHost>

# Host for testing mobilization and proxy_suffix.
<VirtualHost localhost:@@APACHE_SECONDARY_PORT@@>
  ServerName @@PAGESPEED-TEST-HOST@@.suffix.net
  ModPagespeedProxySuffix .suffix.net
  DocumentRoot "@@APACHE_DOC_ROOT@@"
  ModPagespeedFetchProxy localhost:@@APACHE_SECONDARY_PORT@@
  ModPagespeedFileCachePath "@@MOD_PAGESPEED_CACHE@@_proxysuffix"
  ModPagespeedRewriteLevel PassThrough
  ModPagespeedMobLayout on
  ModPagespeedMobNav on
  ModPagespeedAlwaysMobilize on
  ModPagespeedProxySuffix .suffix.net
  ModPagespeedEnableFilters rewrite_domains,collapse_whitespace,mobilize
  ModPagespeedEnableFilters rewrite_images,experiment_collect_mob_image_info,rewrite_css
  ModPagespeedEnableFilters rewrite_domains,mobilize
  ModPagespeedEnableFilters inline_javascript,rewrite_javascript
  ModPagespeedDisableFilters add_instrumentation,inline_images
  ModPagespeedDomainRewriteHyperlinks on
  ModPagespeedCriticalImagesBeaconEnabled false
  ModPagespeedRewriteDeadlinePerFlushMs 5000
</VirtualHost>

#ALL_DIRECTIVES # Invoke all ModPagespeed* directives to make sure they work:
#ALL_DIRECTIVES ModPagespeedAllow foo
#ALL_DIRECTIVES ModPagespeedAnalyticsID 1234
#ALL_DIRECTIVES ModPagespeedAvoidRenamingIntrospectiveJavascript true
#ALL_DIRECTIVES ModPagespeedAllowOptionsToBeSetByCookies true
#ALL_DIRECTIVES ModPagespeedBeaconUrl "http://example.com/beacon"
#ALL_DIRECTIVES ModPagespeedBlockingRewriteKey test
#ALL_DIRECTIVES ModPagespeedCacheFlushFilename /tmp/cache.flush
#ALL_DIRECTIVES ModPagespeedCacheFlushPollIntervalSec 10
#ALL_DIRECTIVES ModPagespeedCacheFragment share-a-cache-please
#ALL_DIRECTIVES ModPagespeedClientDomainRewrite false
#ALL_DIRECTIVES ModPagespeedCollectRefererStatistics false
#ALL_DIRECTIVES ModPagespeedCombineAcrossPaths true
#ALL_DIRECTIVES ModPagespeedCompressMetadataCache true
#ALL_DIRECTIVES ModPagespeedCriticalImagesBeaconEnabled true
#ALL_DIRECTIVES ModPagespeedCreateSharedMemoryMetadataCache config 10000
#ALL_DIRECTIVES ModPagespeedCssFlattenMaxBytes 2000
#ALL_DIRECTIVES ModPagespeedCssImageInlineMaxBytes 2000
#ALL_DIRECTIVES ModPagespeedCssInlineMaxBytes 2000
#ALL_DIRECTIVES ModPagespeedCssOutlineMinBytes 2000
#ALL_DIRECTIVES ModPagespeedCssPreserveURLs off
#ALL_DIRECTIVES ModPagespeedDefaultSharedMemoryCacheKB 1000
#ALL_DIRECTIVES ModPagespeedDisableFilters strip_scripts
#ALL_DIRECTIVES ModPagespeedDisallow bar
#ALL_DIRECTIVES ModPagespeedDomain http://example.com
#ALL_DIRECTIVES ModPagespeedDomainRewriteHyperlinks true
#ALL_DIRECTIVES ModPagespeedEnableAggressiveRewritersForMobile false
#ALL_DIRECTIVES ModPagespeedEnableFilters extend_cache
#ALL_DIRECTIVES ModPagespeedExperimentSpec "id=8;percent=10"
#ALL_DIRECTIVES ModPagespeedExperimentVariable 3
#ALL_DIRECTIVES ModPagespeedFetchProxy localhost:4321
#ALL_DIRECTIVES ModPagespeedFetchWithGzip on
#ALL_DIRECTIVES ModPagespeedFetcherTimeOutMs 1000
#ALL_DIRECTIVES ModPagespeedFileCacheCleanIntervalMs 3600000
#ALL_DIRECTIVES ModPagespeedFileCacheInodeLimit 10000
#ALL_DIRECTIVES ModPagespeedFileCachePath /tmp/cache/
#ALL_DIRECTIVES ModPagespeedFileCacheSizeKb 1000
#ALL_DIRECTIVES ModPagespeedFinderPropertiesCacheExpirationTimeMs 300000
#ALL_DIRECTIVES ModPagespeedForbidAllDisabledFilters true
#ALL_DIRECTIVES ModPagespeedForbidFilters rewrite_images
#ALL_DIRECTIVES ModPagespeedForceCaching off
#ALL_DIRECTIVES ModPagespeedEnrollExperiment 3
#ALL_DIRECTIVES ModPagespeedHashRefererStatistics false
#ALL_DIRECTIVES ModPagespeedImageInlineMaxBytes 2000
#ALL_DIRECTIVES ModPagespeedImageLimitOptimizedPercent 80
#ALL_DIRECTIVES ModPagespeedImageLimitResizeAreaPercent 80
#ALL_DIRECTIVES ModPagespeedImageMaxRewritesAtOnce 5
#ALL_DIRECTIVES ModPagespeedImageRecompressionQuality 75
#ALL_DIRECTIVES ModPagespeedImageResolutionLimitBytes 10000000
#ALL_DIRECTIVES ModPagespeedImagePreserveURLs false
#ALL_DIRECTIVES ModPagespeedImageWebpRecompressionQuality 85
#ALL_DIRECTIVES ModPagespeedImageWebpRecompressionQualityForSmallScreens 85
#ALL_DIRECTIVES ModPagespeedImplicitCacheTtlMs 60000
#ALL_DIRECTIVES ModPagespeedLoadFromFileCacheTtlMs 60000
#ALL_DIRECTIVES ModPagespeedInPlaceResourceOptimization on
#ALL_DIRECTIVES ModPagespeedIncreaseSpeedTracking true
#ALL_DIRECTIVES ModPagespeedInstallCrashHandler off
#ALL_DIRECTIVES ModPagespeedJpegRecompressionQuality 80
#ALL_DIRECTIVES ModPagespeedJsInlineMaxBytes 2000
#ALL_DIRECTIVES ModPagespeedJsOutlineMinBytes 2000
#ALL_DIRECTIVES ModPagespeedJsPreserveURLS off
#ALL_DIRECTIVES ModPagespeedLazyloadImagesAfterOnload on
#ALL_DIRECTIVES ModPagespeedLazyloadImagesBlankUrl "http://www.gstatic.com/psa/static/1.gif"
#ALL_DIRECTIVES ModPagespeedLRUCacheByteLimit 1000
#ALL_DIRECTIVES ModPagespeedLRUCacheKbPerProcess 1
#ALL_DIRECTIVES ModPagespeedListOutstandingUrlsOnError on
#ALL_DIRECTIVES ModPagespeedLoadFromFile http://example.com/ /var/html/example/
#ALL_DIRECTIVES ModPagespeedLoadFromFileMatch "^http://example.com/" /var/html/example/
#ALL_DIRECTIVES ModPagespeedLoadFromFileRule allow /var/html/example/
#ALL_DIRECTIVES ModPagespeedLoadFromFileRuleMatch Disallow \.php.css$
#ALL_DIRECTIVES ModPagespeedLogDir /tmp/log/
#ALL_DIRECTIVES ModPagespeedLogRewriteTiming false
#ALL_DIRECTIVES ModPagespeedLowercaseHtmlNames true
#ALL_DIRECTIVES ModPagespeedMaxCombinedCssBytes 100000
#ALL_DIRECTIVES ModPagespeedMaxCombinedJsBytes 100000
#ALL_DIRECTIVES ModPagespeedMapOriginDomain example.com localhost
#ALL_DIRECTIVES ModPagespeedMapRewriteDomain example.com static.example.com
#ALL_DIRECTIVES ModPagespeedMaxImageSizeLowResolutionBytes 1000
#ALL_DIRECTIVES ModPagespeedMaxInlinedPreviewImagesIndex 80
#ALL_DIRECTIVES ModPagespeedMaxSegmentLength 100
#ALL_DIRECTIVES ModPagespeedMemcachedServers localhost:@@MEMCACHED_PORT@@
#ALL_DIRECTIVES ModPagespeedMemcachedThreads 1
#ALL_DIRECTIVES ModPagespeedMessageBufferSize 100
#ALL_DIRECTIVES ModPagespeedMinImageSizeLowResolutionBytes 2000
#ALL_DIRECTIVES ModPagespeedModifyCachingHeaders true
#ALL_DIRECTIVES ModPagespeedNumExpensiveRewriteThreads 2
#ALL_DIRECTIVES ModPagespeedNumRewriteThreads 4
#ALL_DIRECTIVES ModPagespeedOptionCookiesDurationMs 12345
#ALL_DIRECTIVES ModPagespeedPreserveSubresourceHints on
#ALL_DIRECTIVES ModPagespeedPreserveUrlRelativity on
#ALL_DIRECTIVES ModPagespeedProgressiveJpegMinBytes 1000
#ALL_DIRECTIVES ModPagespeedRateLimitBackgroundFetches true
#ALL_DIRECTIVES ModPagespeedRefererStatisticsOutputLevel simple
#ALL_DIRECTIVES ModPagespeedReportUnloadTime true
#ALL_DIRECTIVES ModPagespeedRespectVary true
#ALL_DIRECTIVES ModPagespeedRespectXForwardedProto off
#ALL_DIRECTIVES ModPagespeedRetainComment "special"
#ALL_DIRECTIVES ModPagespeedRewriteDeadlinePerFlushMs 100
#ALL_DIRECTIVES ModPagespeedInPlaceRewriteDeadlineMs 100
#ALL_DIRECTIVES ModPagespeedRewriteLevel CoreFilters
#ALL_DIRECTIVES ModPagespeedRewriteRandomDropPercentage 0
#ALL_DIRECTIVES ModPagespeedRunExperiment true
#ALL_DIRECTIVES ModPagespeedShardDomain example.com 1.example.com,2.example.com
#ALL_DIRECTIVES ModPagespeedSharedMemoryLocks true
#ALL_DIRECTIVES ModPagespeedSlowFileLatencyUs 80000
#ALL_DIRECTIVES ModPagespeedSlurpDirectory /tmp/slurp/
#ALL_DIRECTIVES ModPagespeedSlurpFlushLimit 5
#ALL_DIRECTIVES ModPagespeedSlurpReadOnly true
#ALL_DIRECTIVES ModPagespeedStatistics true
#ALL_DIRECTIVES ModPagespeedStatisticsLogging true
#ALL_DIRECTIVES ModPagespeedStatisticsLoggingChartsCSS "example.com/css.css"
#ALL_DIRECTIVES ModPagespeedStatisticsLoggingChartsJS "example.com/js.js"
#ALL_DIRECTIVES ModPagespeedStatisticsLoggingFile /tmp/log/stats.log
#ALL_DIRECTIVES ModPagespeedStatisticsLoggingIntervalMs 3000
#ALL_DIRECTIVES ModPagespeedStatisticsLoggingMaxFileSizeKb 1024
#ALL_DIRECTIVES ModPagespeedStickyQueryParameters something-private
#ALL_DIRECTIVES ModPagespeedSupportNoScriptEnabled true
#ALL_DIRECTIVES ModPagespeedTestProxy off
#ALL_DIRECTIVES ModPagespeedUrlValuedAttribute span src Hyperlink
#ALL_DIRECTIVES ModPagespeedUseAnalyticsJs false
#ALL_DIRECTIVES ModPagespeedUseExperimentalJsMinifier on
#ALL_DIRECTIVES ModPagespeedUsePerVHostStatistics on
#ALL_DIRECTIVES ModPagespeedXHeaderValue "test"
#ALL_DIRECTIVES ModPagespeedWebpRecompressionQuality 85
#ALL_DIRECTIVES ModPagespeedWebpRecompressionQualityForSmallScreens 85
#ALL_DIRECTIVES ModPagespeedImageJpegNumProgressiveScans 3
#ALL_DIRECTIVES ModPagespeedImageJpegNumProgressiveScansForSmallScreens 2
