Назад | Перейти на главную страницу

Safari не может загрузить некоторые ресурсы через http / 2 с помощью Apache

У меня проблема в Safari только тогда, когда сайты, загруженные через http / 2 на наших серверах Apache 2.4, периодически (каждые 3-5 запросов) не могут загружать определенные ресурсы. Кажется, что страницы всегда загружаются, но JS, CSS и изображения не работают. Я увижу ошибку Failed to load resource: The network connection was lost. в консоли и иногда Unexpected end of script ошибка. Если я загружаю JS напрямую, каждые 3-5 запросов загружается только около 3/5 файла, и никаких ошибок не возникает. Если я отключу http / 2, все будет работать как положено. Все сайты работают с сертификатами Let's Encrypt.

Есть решение этой проблемы? В качестве альтернативы, можно ли использовать BrowserMatch для отключения http2 только для Safari? Хотя это не идеальное решение, предпочтительно, чтобы сайты не могли загружать половину своих ресурсов в Safari. Однако мне никогда раньше не приходилось использовать BrowserMatch, и я не уверен, каким будет синтаксис.

Информация о конфигурации:

Debian version: 9.6
Server version: Apache/2.4.25 (Debian)
Server built:   2018-11-03T18:46:19
Protocols h2 h2c http/1.1
PHP7.0 and PHP7.2 running with FPM

Загруженные модули:

core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
actions_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
expires_module (shared)
filter_module (shared)
http2_module (shared)
mime_module (shared)
mpm_event_module (shared)
negotiation_module (shared)
proxy_module (shared)
proxy_fcgi_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
socache_shmcb_module (shared)
ssl_module (shared)
status_module (shared)
vhost_alias_module (shared)

Пример неудачного сетевого запроса:

Summary
URL: https://www.example.com/wp-content/themes/example/app/scripts.min.js
Status: 200
Source: Network
Address: 111.111.111.111:443

Request
:method: GET
:scheme: https
:authority: www.example.com
:path: /wp-content/themes/example/app/scripts.min.js
Cookie: _ga=GA1.2.693564551.1543614967; _gid=GA1.2.1931614765.1543937949; _gat_gtag_UA_127993364_1=1
Accept: */*
Cache-Control: max-age=0
Accept-Language: en-us
If-None-Match: "45da3-57c343a615009-gzip"
Host: www.tahv.org
If-Modified-Since: Tue, 04 Dec 2018 15:50:43 GMT
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15
Referer: https://www.example.com/
Accept-Encoding: br, gzip, deflate
Connection: keep-alive

Response
:status: 200
Content-Type: application/javascript
Expires: Fri, 07 Dec 2018 16:31:14 GMT
Last-Modified: Tue, 04 Dec 2018 15:50:43 GMT
Vary: Accept-Encoding
Accept-Ranges: bytes
Date: Tue, 04 Dec 2018 16:31:14 GMT
Content-Encoding: gzip
Cache-Control: max-age=259200
ETag: "45da3-57c343a615009-gzip"
Server: Apache/2.4.25 (Debian)