apache / incubator-pagespeed-mod

Apache module for rewriting web pages to reduce latency and bandwidth.
http://modpagespeed.com
Apache License 2.0
696 stars 158 forks source link

Fetch failed for resource url and Aborting fetch #1851

Open AmiOta opened 5 years ago

AmiOta commented 5 years ago

Hi,

After installing PageSpeed I am having many warnings in the error_log every 2 seconds, my page sometimes loads fast, but sometimes it does not load the styles or the images and the ones that load take a long time.

PageSpeed: 1.13.35.2-0 Apache: 2.2.15 OS: Red Hat Enterprise Linux Server release 6.6 (Santiago)

PageSpeed Config (pagespeed.conf):

<IfModule !mod_version.c>
  LoadModule version_module /usr/lib64/httpd/modules/mod_version.so
</IfModule>

<IfVersion < 2.4>
  LoadModule pagespeed_module /usr/lib64/httpd/modules/mod_pagespeed.so
</IfVersion>
<IfVersion >= 2.4.2>

  <IfModule !access_compat_module>
    LoadModule access_compat_module /usr/lib64/httpd/modules/mod_access_compat.so
  </IfModule>

  LoadModule pagespeed_module /usr/lib64/httpd/modules/mod_pagespeed_ap24.so
</IfVersion>

<IfModule !mod_deflate.c>
 LoadModule deflate_module /usr/lib64/httpd/modules/mod_deflate.so
</IfModule>
<IfModule pagespeed_module>
    ModPagespeed on

    AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html

    ModPagespeedFileCachePath            "/var/cache/mod_pagespeed/"

    ModPagespeedLogDir "/var/log/pagespeed"

    ModPagespeedSslCertDirectory "/etc/pki/tls/certs"
    ModPagespeedSslCertFile /etc/pki/tls/cert.pem

    ModPagespeedCreateSharedMemoryMetadataCache "/var/cache/mod_pagespeed/" 51200

      ModPagespeedRewriteLevel PassThrough
      ModPagespeedEnableFilters trim_urls,remove_quotes,collapse_whitespace,elide_attributes,rewrite_images,resize_images,combine_css,rewrite_css,combine_javascript,rewrite_javascript,insert_dns_prefetch,extend_cache

      ModPagespeedImageResolutionLimitBytes 3145728
      ModPagespeedImageMaxRewritesAtOnce 1

    ModPagespeedFileCacheSizeKb          5242880
    ModPagespeedFileCacheInodeLimit        500000

    <Location /pagespeed_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler pagespeed_admin
    </Location>
    <Location /pagespeed_global_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler pagespeed_global_admin
    </Location>

    ModPagespeedStatisticsLogging on

    ModPagespeedMessageBufferSize 100000
</IfModule>

Error log:

[mod_pagespeed 1.13.35.2-0 @1143] [1227/190216:WARNING:resource_fetch.cc(195)] Fetch failed for resource url http://www.mysite.com/.../poll.css,qpkd3k1.pagespeed.ce.VJWtJYCaVk.css
[mod_pagespeed 1.13.35.2-0 @41253] [1228/095326:WARNING:resource_fetch.cc(195)] Fetch failed for resource url http://www.mysite.com/.../XXXXXXXXX.jpg.pagespeed.ce.lQlRoU7A9q.jpg
[mod_pagespeed 1.13.35.2-0 @48754] [1228/095327:WARNING:resource_fetch.cc(195)] Fetch failed for resource url http://www.mysite.com/.../XXXXXXXXX.jpg.pagespeed.ce.UpFe8OMHFM.jpg

[mod_pagespeed 1.13.35.2-0 @63316] [1227/192801:WARNING:serf_url_async_fetcher.cc(1222)] Aborting fetch of http://www.mysite.com/.../XXXXXXXXX.png (connecting to:17x.xx.xx.xx)
[mod_pagespeed 1.13.35.2-0 @1207] [1227/193037:WARNING:serf_url_async_fetcher.cc(1222)] Aborting fetch of http://www.mysite.com/.../XXXXXXXXX.jpg?itok=YwlSjWrR (connecting to:17x.xx.xx.xx)

[mod_pagespeed 1.13.35.2-0 @60140] [1227/190052:WARNING:serf_url_async_fetcher.cc(1222)] Aborting fetch of http://www.mysite.com/.../XXXXXXXXX.js?phitn8 (connecting to:17x.xx.xx.xx)
[mod_pagespeed 1.13.35.2-0 @59752] [1227/190138:WARNING:serf_url_async_fetcher.cc(1222)] Aborting fetch of http://www.mysite.com/.../XXXXXXXXX.css?pkd3k1 (connecting to:17x.xx.xx.xx)
...
eldk commented 5 years ago

Hello,

Maybe you should look at Serf/1.3.9 in regular apache2 access logs for the domain and check responses for fetched resources ?

Eric

AmiOta commented 5 years ago

I'm getting an error 304:

"GET .../jquery.cookie.js HTTP/1.1" 304 - "..." "Serf/1.3.9 (mod_pagespeed/1.13.35.2-0)"

oschaaf commented 5 years ago

Http 304 indicates that the resource was not modified. That's not an error, I think it is fine.

gnif commented 2 years ago

Note I have come across another configuration that can cause this error:

Nginx Load Balancer --- proxy_protocol -> Backend Nginx

Two issues:

1) pagespeed will attempt to perform a standard http/https request to the proxy_protocol port unless you use MapOriginDomain to remap it to a port that is not using proxy_protocol. 2) pagespeed will fail to fetch resources via HTTPS due to lack of IPv6 support when the backend server has no IPv6 network

The solution in my instance was to configure two servers like so:

server
{
  listen 8443 ssl http2 proxy_protocol;
  port_in_redirect off;
  real_ip_header proxy_protocol;
  pagespeed MapOriginDomain http://localhost:8080 https://example.com example.com;
  root /home/example/public_html;
}

server
{
  listen localhost:8080;
  root /home/example/public_html;
}

The reason for the second server is so that any dynamic processing via PHP, etc... doesn't get bypassed by using direct file access. This is not shown in the above example. This is also faster then performing another HTTPS request as there is no need to perform any encryption, nor is there any risk as the second server is only allowing loopback connections on localhost.