ОНОВЛЕННЯ: Здається, основна проблема із завантаженням зображень пов'язана з тим, як плагін / розширення HTTPS Everywhere для EFF обробляв деякі Tumblr URL-адреси. Про розробника надійшло сповіщення, і, здається, виправлено місце . Ця відповідь в основному розбиває детективну роботу, розроблену для розкриття проблеми, визначеної первинним запитанням, і може виявитися корисною для подальшої налагодження / діагностики, якщо подібне питання з’явиться в майбутньому.
РЕДАКТУВАННЯ: Більший вміст про вилуговування зображення здається недійсним. Таким чином, ви додасте нову ідею вгорі і залиште інформацію про випилювання зображення внизу, на випадок, якщо комусь це стане в нагоді.
Amazon CloudFront Ідеї CDN
Гаразд, використовуючи надані вами URL-адреси, а також деякий досвід мого реального досвіду щодо налаштувань CDN Amazon CloudFront - я думаю, що я щось виявив. Схоже, конфігурація CDN від Amazon CloudFront CDC Tumblr чомусь задихається. Ось чому я думаю, що це так.
Візьмемо цей приклад URL:
http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Тепер запустімо curl -I
для отримання інформації заголовка цього файлу:
curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Вихід для цього буде приблизно таким:
HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 782141
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=1209600
Date: Thu, 05 Mar 2015 02:15:44 GMT
Server: nginx
X-Cache: Miss from cloudfront
Via: 1.1 7e54fc06cd70e4752fe050bbe5c130be.cloudfront.net (CloudFront)
X-Amz-Cf-Id: QyIUyzfaJJN3PU_xWkW0P-D2kjg_1cVenKzFAoY2PubgZQlBHWorZQ==
Тепер на це слід звернути увагу: Date
(дата та час файлу в кінцевій точці CloudFront) та X-Cache
заголовки (статус доставки вмісту Amazon). Типова поведінка на Amazon CloudFront - перший доступ передасть "міс з хмарного фронту", а потім, якщо ви зробите інший curl -I
одразу після цього, має бути Hit from cloudfront
.
Але це не те, що я бачив саме зараз. Ось розбивка Date
і X-Cache
статус купового доступу, який я зробив:
Date: Thu, 05 Mar 2015 02:19:37 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:39 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:44 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Причина, що існує декілька елементів з однаковими точними даними, які знаходяться Hit from cloudfront
біля кінця, полягає в тому, що саме це відбувається на CDN: Якщо кінцева точка CDN має файл, то Date
співвідноситься з фактичною датою створення / модифікації файлу, який кінцева точка має.
Ви помічаєте, що перші чотири доступу розташовані за секунди, з різними датами / часом, і всі вони є Miss from cloudfront
, правда? Це означає, що кінцева точка CDN просто повторюється, що в той час була спроба отримати доступ до цього файлу, і всі спроби були пропущені.
Отже, моя оцінка цього крісла полягає в тому, що системи Tumblr не йдуть в ногу з Amazon CloudFront CDN або Amazon CloudFront CDN не йде в ногу з Tumblr. Але якимось чином на їхньому сервері все не так. Оскільки це CDN, хтось, що отримує доступ до файлів в одному місці, може не помітити проблеми, тоді як у когось іншого місця виникнення проблем із переглядом зображення.
Це все, що потрібно сказати, я не думаю, що це можна легко зрозуміти на стороні клієнта.
EDIT: Отже, оригінальний плакат додав нові URL-адреси, і це все ще вказує на проблему на сервері, але я просто хотів опублікувати деталі для запису.
EdgeCast & Highwinds CDN Ідеї
Тож оригінальний плакат додав більше конкретики, тож ось детальніше на основі публікації в блозі, яка використовується як приклад:
http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain
Ці графічні URL-адреси подаються як приклади URL-адрес у цій публікації:
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
І ці дві URL-адреси зображень справді не вдається. Але з моєї сторони - дивлячись на оригінальний новий код блогу з Брукліна, Нью-Йорк, США - я не бачу цих gs1.wac.edgecastcdn.net
URL-адрес EdgeCast ( ). Це скоріше такі URL-адреси, які я бачу:
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
Тож моя перша думка - чому оригінальний плакат бачить тих EdgeCast ( gs1.wac.edgecastcdn.net
). Але тоді, якщо я просліджую маршрут, 41.media.tumblr.com
я бачу, що це сервер, яким керує Highwinds (!?!?). На відміну від початкових URL-адрес, переданих оригінальним користувачем, використовується 36.media.tumblr.com
ім'я хоста, і ви можете бачити, що ними керують Amazon CloudFront CDN-сервери.
Що все сказати - про що я говорив раніше - все це, мабуть, є проблемою на сервері з Tumblr та їх управлінням CDN. Але з мого боку - в Брукліні, Нью-Йорк, США - я чітко бачу, як контент доставляється, як очікувалося, від CDN-серверів Highwinds, а також CDN-серверів Amazon CloudFront. Звідки ці URL-адреси EdgeCast надходять або як / чому вони не стають, не вдається контролювати когось із боку клієнта. З цим, безумовно, можна звернутися до технічного персоналу компанії Tumblr, тому що кінцевий користувач не може вирішити це.
Зображення Ідеї вилуговування
Можливо, це вже не актуально, але тут для довідки.
Ви заявляючи це, дайте мені підказку:
Використання wget
прямих посилань на зображення працює.
На багатьох сайтах існують правила, які зазвичай встановлюються через Apache, які запобігають вилуговування зображень. Більш докладно про те, як ці правила працюють , надано тут і зведено так:
Використовуючи .htaccess, ви можете заборонити гаряче посилання на вашому сервері, тому ті, хто намагається зв’язатись із зображенням або CSS-файлом на вашому веб-сайті, блокуються (невдалий запит, наприклад, зламане зображення) або подають інший вміст ( тобто: образ розлюченої людини).
Виходячи з вашого опису - і того, що ви можете отримати доступ до зображень за допомогою - wget
приводить мене до думки, що зображення, у яких виникають проблеми, не розміщуються в Tumblr користувачами, а зображення, розміщені в блозі Tumblr, але фактично розміщені на іншому сайт.
Коли вводяться стандартні процедури вилуговування зображень, перегляд вбудованого зображення на одному веб-сайті, розміщеному на іншому веб-сайті, який блокує п'явку, призведе до розриву посилання на зображення або, можливо, "Зупинити вилучення!" зображення, яке повертається Це пояснюється тим, що основні правила проти виливки - такі, як на цій сторінці прикладу - перехресні перевірки зображень, щоб переконатися, що сторінка із запитом на зображення відповідає домену, що розміщує зображення.
Отже, коли ви отримуєте доступ до зображення через нього, wget
ви отримуєте доступ безпосередньо до зображення. Тому правила вилучення зображень не запускаються. Таким чином, ви можете отримати зображення через, wget
але не тоді, коли воно вставлене на іншу сторінку.