| <html> |
| <head> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>PageSpeed Admin Pages</title> |
| <link rel="stylesheet" href="doc.css"> |
| </head> |
| <body> |
| <!--#include virtual="_header.html" --> |
| |
| |
| <div id=content> |
| <h1>PageSpeed Admin Pages</h1> |
| <p> |
| The admin pages are a collection of features that provide visibility |
| into the operation of the PageSpeed optimizations. |
| </p> |
| <p> |
| The pagespeed_admin and pagespeed_global_admin pages aggregate a set of pages |
| showing server state so they can be accessed from a single handler. By |
| organizing all these features under a single admin page, this can be done once, |
| and can serve as a launching point for future administration features. |
| Before <strong>version 1.9.32.1</strong> the admin pages were read-only, but |
| starting in <strong>version 1.9.32.1</strong>, cache purging is supported. |
| </p> |
| <img src="images/admin_config.png" style="border:1px solid black" /> |
| <p> |
| The name of the currently active page is underlined in the top navigation bar. |
| </p> |
| <table> |
| <thead> |
| <tr> |
| <th>Page</th> |
| <th>Related Options</th> |
| <th>Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Statistics</td> |
| <td> |
| <a href="#statistics"><code>Statistics</code></a><br/> |
| <a href="#virtual-hosts-and-stats" |
| ><code>UsePerVHostStatistics</code></a><br/> |
| <code>mod_pagespeed_beacon</code><br/> |
| <code>ngx_pagespeed_beacon</code> |
| </td> |
| <td> |
| Shows server statistics since startup, such as how many |
| resources are being optimized by filters, as well as various |
| latency and cache effectiveness metrics. |
| </td> |
| </tr> |
| <tr> |
| <td>Configuration</td> |
| <td><a href="config_filters">Configuring Filters</a><br/> |
| <a href="https_support#spdy_configuration" |
| ><code>ModPagespeedIf</code></a> (Apache only)</td> |
| <td> |
| Shows detailed configuration information including all filters, |
| options, and the current cache flush timestamp. |
| </td> |
| </tr> |
| <tr> |
| <td>Histograms</td> |
| <td> |
| <a href="filter-instrumentation-add" |
| ><code>add_instrumentation</code></a><br/> |
| </td> |
| <td> |
| Shows detailed latency data for Page Load Time, rewriting, |
| caches and HTTP fetching. |
| </td> |
| </tr> |
| <tr> |
| <td>Caches</td> |
| <td> |
| <a href="system#memcached"><code>MemcachedServers</code></a> |
| <a href="system#shm_cache"><code>CreateSharedMemoryMetadataCache</code></a> |
| <a href="system#purge_cache"><code>EnableCachePurge</code></a> |
| </td> |
| <td> |
| Shows detailed cache configuration information. When accessed |
| from the Admin handler, it can be used to inspect the contents |
| of the cache, and provides an interface to purge the cache. |
| </td> |
| </tr> |
| <tr> |
| <td>Console</td> |
| <td> |
| <a href="admin#statistics"><code>Statistics</code></a><br/> |
| <a href="console#configuring"><code>StatisticsLogging</code></a><br/> |
| <a href="console#configuring"><code>LogDir</code></a> |
| </td> |
| <td> |
| Displays a <a href="console">console</a> of graphs |
| of server optimization behavior over time. |
| </td> |
| </tr> |
| <tr> |
| <td>Message History</td> |
| <td> |
| <a href="#message-buffer-size"><code>MessageBufferSize</code></a> |
| </td> |
| <td> |
| Server-wide history of recent logging output from PageSpeed, |
| including messages that are omitted from the server log file based on |
| its log level. |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <p> |
| Before 1.8.31.2, the main admin page is not available, but there |
| are page-specific handlers for statistics, messages, and the |
| console. In 1.8.31.2 and later, the <code>*_pagespeed_*</code> handlers, such |
| as <code>mod_pagespeed_statistics</code>, will continue to be supported: |
| <ul> |
| <li>They provide read-only access to server operation. There may |
| be cases where a site owner wants to share statistics or console |
| information but not the ability to purge the cache.</li> |
| <li>Existing configurations must continue to work after an upgrade to |
| a release that supports pagespeed_admin.</li> |
| <li>The admin pages may later gain support for modifying the server |
| state</li> |
| </ul> |
| </p> |
| <h2 id="config">Configuring Admin Pages</h2> |
| |
| <p> |
| In this table we use the term "server" for an Apache VirtualHost and |
| an nginx Server Block. We use the term "global" to mean the entire |
| Apache or nginx system, covering all the configured VirtualHost and |
| Server Blocks. |
| </p> |
| <table> |
| <thead> |
| <tr><th>Apache Handler</th><th>Nginx Option</th><th>Version</th> |
| <th>Description</th></tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code>pagespeed_admin</code></td> |
| <td><code>AdminPath</code></td> |
| <td>1.8.31.2+</td><td>Covers all administrative functions for |
| a host in one handler. If you establish this handler, |
| you don't need any of the other server-scoped methods. Only |
| give 'admin' page access to clients that you are comfortable |
| allowing to modify the state of your PageSpeed configuration. |
| </td> |
| </tr> |
| <tr> |
| <td><code>pagespeed_global_admin</code></td> |
| <td><code>GlobalAdminPath</code></td> |
| <td>1.8.31.2+</td><td>Covers all administrative functions for |
| the entire global state in one handler. If you establish this |
| handler, you don't |
| need <code>mod_pagespeed_global_statistics</code>.</td> |
| </tr> |
| <tr> |
| <td><code>mod_pagespeed_statistics</code></td> |
| <td><code>StatisticsPath</code> (1.8.31.2+)</td> |
| <td>All</td><td>Launchpad for Statistics, Histograms, and |
| a subset of the Caches page as described above.</td> |
| </tr> |
| <tr> |
| <td><code>mod_pagespeed_global_statistics</code></td> |
| <td><code>GlobalStatisticsPath</code> (1.8.31.2+)</td> |
| <td>1.1+</td><td>Same as above, but aggregates statistics across all |
| configured servers. You must enable |
| <a href="#virtual-hosts-and-stats" |
| ><code>UsePerVHostStatistics</code></a> for separate global |
| statistics to be retained, otherwise all statistics will be global.</td> |
| </tr> |
| <tr> |
| <td><code>mod_pagespeed_message</code></td> |
| <td><code>MessagesPath</code> (1.8.31.2+)</td> |
| <td>1.0+</td><td>Displays recent log messages printed by PageSpeed, |
| including messages that may be below the current server loglevel |
| threshold such as "Info" messages. Requires that |
| <a href="#message-buffer-size"><code>MessageBufferSize</code></a> be set.</td> |
| </tr> |
| <tr> |
| <td><code>pagespeed_console</code></td> |
| <td><code>ConsolePath</code> (1.8.31.2+)</td> |
| <td>1.6+</td><td>Displays a <a href="console">console</a> of graphs |
| of server optimization behavior over time.</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="handlers">Establishing Handlers in Apache</h2> |
| <p> |
| Each handler is optional; add them individually to enable |
| admin features. Note that when you add handlers for |
| <code>pagespeed_admin</code> and <code>pagespeed_global_admin</code> |
| you are granting read/write access to server-state. The other handlers |
| are read-only. A sample handler that filters on IP address is |
| in the default configuration, whose general form is: |
| </p> |
| <pre class="prettyprint lang-sh"> |
| <Location /PATH> |
| Order allow,deny |
| Allow from localhost |
| Allow from 127.0.0.1 |
| SetHandler HANDLER_NAME |
| </Location> |
| </pre> |
| <p> |
| You can choose any path for a handler, but you must specify the handler |
| name exactly as it appears in the table above. By convention we use |
| use the handler name for the path. You may also want to |
| employ login-based access to the admin pages, using |
| <code>AllowOverride AuthConfig</code>. Please see the Apache |
| <a href="http://httpd.apache.org/docs/2.2/howto/auth.html">2.2</a> |
| or |
| <a href="http://httpd.apache.org/docs/2.4/howto/auth.html">2.4</a> |
| Documentation for details. |
| </p> |
| <h3 id="handlers">Establishing Handlers in Nginx</h2> |
| <p> |
| In nginx, the handlers must be specified as location blocks. |
| </p> |
| <pre class="prettyprint lang-sh"> |
| location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; } |
| location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; } |
| location /ngx_pagespeed_message { allow 127.0.0.1; deny all; } |
| location /pagespeed_console { allow 127.0.0.1; deny all; } |
| location ~ ^/pagespeed_admin { allow 127.0.0.1; deny all; } |
| location ~ ^/pagespeed_global_admin { allow 127.0.0.1; deny all; } |
| </pre> |
| <p class="note"> |
| Note that these handlers must precede the |
| "<code>\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+</code>" location block. |
| </p> |
| <p> |
| In version 1.8.31.2 and later, the above location blocks are |
| needed for each path you elect to enable in PageSpeed options: |
| </p> |
| <pre> |
| pagespeed StatisticsPath /ngx_pagespeed_statistics; |
| pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics; |
| pagespeed MessagesPath /ngx_pagespeed_message; |
| pagespeed ConsolePath /pagespeed_console; |
| pagespeed AdminPath /pagespeed_admin; |
| pagespeed GlobalAdminPath /pagespeed_global_admin; |
| </pre> |
| <p> |
| You can choose any path, as long as it's consistent between |
| the <code>pagespeed Path</code> and the <code>location</code>. By |
| convention we use the names as specified in the example. |
| </p> |
| <p> |
| Prior to version 1.8.31.2, the above "Path" settings do not exist, |
| and the failure to specify location blocks leaves the paths active |
| with no access restrictions. The module will service requests |
| to the paths whether the location blocks are specified or not. |
| This applies to <code>/ngx_pagespeed_statistics</code>, |
| <code>/ngx_pagespeed_global_statistics</code>, |
| <code>/ngx_pagespeed_message</code>, and <code>/pagespeed_console</code>. |
| </p> |
| <p class="note"> |
| If you define access control for <code>/pagespeed_admin</code> or |
| <code>/pagespeed_console</code>, you must do so earlier in the configuration |
| file than the path to handle <code>.pagespeed</code> resources, to ensure |
| that the handlers are disambiguated. |
| </p> |
| <h3 id="limiting-handlers">Limiting Handler Access</h3> |
| <p class="note"><strong>Note: New feature as of 1.10.33.0</strong></p> |
| <p> |
| Apache's SetHandler access controls are accessible to anyone who can |
| modify <code>.htaccess</code> files, so in a typical shared hosting context |
| the global admin site isn't sufficiently protected. As of 1.10.33.0, |
| PageSpeed allows setting an additional restriction of what domains are allowed |
| to load handlers. For example, to deny access entirely, you could put: |
| </p> |
| <dl> |
| <dt>Apache:<dd><pre class="prettyprint" |
| >ModPagespeedStatisticsDomains Disallow * |
| ModPagespeedGlobalStatisticsDomains Disallow * |
| ModPagespeedMessagesDomains Disallow * |
| ModPagespeedConsoleDomains Disallow * |
| ModPagespeedAdminDomains Disallow * |
| ModPagespeedGlobalAdminDomains Disallow *</pre> |
| <dt>Nginx:<dd><pre class="prettyprint" |
| >pagespeed StatisticsDomains Disallow *; |
| pagespeed GlobalStatisticsDomains Disallow *; |
| pagespeed MessagesDomains Disallow *; |
| pagespeed ConsoleDomains Disallow *; |
| pagespeed AdminDomains Disallow *; |
| pagespeed GlobalAdminDomains Disallow *;</pre> |
| </dl> |
| <p> |
| To allow access only to an admin, define a new VHost |
| like <code>admin.example.com</code>, use standard web-server access control |
| (IP or password) to restrict access to only that admin, and then at the top |
| level of your config put: |
| </p> |
| <dl> |
| <dt>Apache:<dd><pre class="prettyprint" |
| >ModPagespeedStatisticsDomains Allow admin.example.com |
| ModPagespeedGlobalStatisticsDomains Allow admin.example.com |
| ModPagespeedMessagesDomains Allow admin.example.com |
| ModPagespeedConsoleDomains Allow admin.example.com |
| ModPagespeedAdminDomains Allow admin.example.com |
| ModPagespeedGlobalAdminDomains Allow admin.example.com</pre> |
| <dt>Nginx:<dd><pre class="prettyprint" |
| >pagespeed StatisticsDomains Allow admin.example.com; |
| pagespeed GlobalStatisticsDomains Allow admin.example.com; |
| pagespeed MessagesDomains Allow admin.example.com; |
| pagespeed ConsoleDomains Allow admin.example.com; |
| pagespeed AdminDomains Allow admin.example.com; |
| pagespeed GlobalAdminDomains Allow admin.example.com;</pre> |
| </dl> |
| <p> |
| Now when you visit <code>admin.example.com/pagespeed_global_admin</code> |
| you'll see global (server-level) admin information, but users are not able to |
| access this under their own domain or turn the handler on |
| with <code>.htaccess</code>. |
| </p> |
| <p> |
| For all six of these options the default value is <code>Allow *</code>. If |
| you explicitly <code>Allow</code> access to any site, all others are |
| automatically <code>Disallow</code>ed. Wildcards are allowed, and additional |
| directives are applied in sequence. For example, consider the following |
| config: |
| </p> |
| <dl> |
| <dt>Apache:<dd><pre class="prettyprint" |
| >ModPagespeedAdminDomains Allow *.example.* |
| ModPagespeedAdminDomains Disallow *.example.org |
| ModPagespeedAdminDomains Allow www.example.org</pre> |
| <dt>Nginx:<dd><pre class="prettyprint" |
| >pagespeed AdminDomains Allow *.example.*; |
| pagespeed AdminDomains Disallow *.example.org; |
| pagespeed AdminDomains Allow www.example.org;</pre> |
| </dl> |
| <p> |
| This would allow access to <code>www.example.com/pagespeed_admin</code>, |
| and <code>www.example.org/pagespeed_admin</code> but |
| not <code>shared.example.com/pagespeed_admin</code>. |
| </p> |
| |
| <h3 id="statistics">Shared Memory Statistics</h2> |
| <p> |
| By default PageSpeed collects cross-process statistics. While |
| they're mostly intended for debugging and evaluation |
| using <code>/mod_pagespeed_statistics</code>, <code>/ngx_pagespeed_statistics</code>, |
| and the <a href="console">PageSpeed Console</a>, statistics are also |
| necessary for limiting concurrent image rewrites |
| and <a href="#rate_limit_background_fetches">background fetches</a>. |
| It's not recommended to turn them off, as their performance impact |
| is minimal, but if you need to you can do so with: |
| <dl> |
| <dt>Apache:<dd><pre class="prettyprint" |
| >ModPagespeedStatistics off</pre></dd></dt> |
| <dt>Nginx:<dd><pre class="prettyprint" |
| >pagespeed Statistics off;</pre></dd></dt> |
| </dl> |
| </p> |
| <h3 id="virtual-hosts-and-stats">Virtual hosts and statistics</h3> |
| <p> |
| You can choose whether PageSpeed aggregates its statistics |
| over all virtual hosts (the default), or to keeps separate counts for each. You |
| can chose the latter by specifying |
| <code>UsePerVHostStatistics on</code>. In that |
| case, <code>/pagespeed_admin</code>, <code>/mod_pagespeed_statistics</code> |
| and <code>/ngx_pagespeed_statistics</code> will show the data for |
| whatever virtual host is being accessed. If you do turn per-virtual |
| host statistics on, you can still access the aggregates |
| under <code>/pagespeed_global_admin</code>, <code>/mod_pagespeed_global_statistics</code> |
| or <code>/ngx_pagespeed_global_statistics</code>. |
| </p> |
| <dl> |
| <dt>Apache:<dd><pre class="prettyprint">ModPagespeedUsePerVhostStatistics on</pre> |
| <dt>Nginx:<dd><pre class="prettyprint">pagespeed UsePerVhostStatistics on;</pre> |
| </dl> |
| |
| <h3 id="message-buffer-size">Message Buffer Size</h3> |
| <p> |
| Determines the number of bytes of shared memory to allocate as a circular |
| buffer for holding recent PageSpeed log messages. By default, the size of |
| this buffer is zero, and no messages will be retained. |
| </p> |
| <dl> |
| <dt>Apache:<dd><pre class="prettyprint">ModPagespeedMessageBufferSize 100000</pre> |
| <dt>Nginx:<dd><pre class="prettyprint">pagespeed MessageBufferSize 100000;</pre> |
| </dl> |
| |
| </div> |
| <!--#include virtual="_footer.html" --> |
| </body> |
| </html> |