UPDATE:ดูเหมือนว่าปัญหาหลักของภาพที่ไม่ได้โหลดเกิดขึ้นจากวิธีที่ปลั๊กอิน / ส่วนขยาย HTTPS ทุกที่ของ EFFจัดการกับ Tumblr URL ของนักพัฒนาได้รับการแจ้งเตือนและการแก้ไขที่ดูเหมือนจะอยู่ในสถานที่ คำตอบนี้แบ่งการทำงานของนักสืบออกเพื่อเปิดเผยปัญหาตามที่ระบุไว้ในคำถามเริ่มต้นและสามารถพิสูจน์ได้ว่ามีประโยชน์สำหรับการดีบัก / วินิจฉัยเพิ่มเติมหากปัญหาที่คล้ายกันปรากฏขึ้นในอนาคต
แก้ไข:เนื้อหาขนาดใหญ่เกี่ยวกับการ leeching ภาพดูเหมือนไม่ถูกต้อง ดังนั้นจะเพิ่มความคิดใหม่ที่ด้านบนและปล่อยข้อมูล leeching ภาพที่ด้านล่างในกรณีที่เป็นประโยชน์กับใครบางคน
แนวคิด CDN ของ Amazon CloudFront
โอเคใช้ URL ที่คุณให้ไว้ - รวมถึงประสบการณ์การใช้งานจริงของฉันในการตั้งค่า CDN ของ Amazon CloudFront - ฉันคิดว่าฉันค้นพบบางสิ่ง ดูเหมือนว่าการกำหนดค่า Amazon CloudFront CDN ของ 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 คือการเข้าถึงแรกจะถ่ายทอด“มิสจาก 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 ใครบางคนที่เข้าถึงไฟล์ในตำแหน่งเดียวอาจไม่สังเกตเห็นปัญหาในขณะที่คนอื่นในตำแหน่งอื่นจะมีปัญหาในการดูรูปภาพ
ซึ่งก็คือทั้งหมดนี้ฉันไม่คิดว่ามันจะถูกลบล้างได้อย่างง่ายดายในฝั่งไคลเอ็นต์
แก้ไข:ดังนั้นผู้โพสต์ดั้งเดิมจึงเพิ่ม URL ใหม่บางส่วนและยังคงชี้ไปที่ปัญหาฝั่งเซิร์ฟเวอร์ แต่ฉันแค่ต้องการโพสต์รายละเอียดสำหรับบันทึก
แนวคิด CDN ของ EdgeCast และ Highwinds
ดังนั้นผู้โพสต์ดั้งเดิมจึงเพิ่มรายละเอียดเพิ่มเติมดังนั้นนี่คือรายละเอียดเพิ่มเติมตามโพสต์บล็อกที่ใช้เป็นตัวอย่าง:
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 รูปภาพทั้งสองนั้นก็ล้มเหลวอย่างแน่นอน แต่จากด้านข้างของฉัน - ดูที่รหัสดั้งเดิมของโพสต์บล็อกจาก Brooklyn, New York, USA - ฉันไม่เห็น EdgeCast ( gs1.wac.edgecastcdn.net
) URL เหล่านั้น ค่อนข้างเป็น 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
) แต่ถ้าฉันทำ traceroute ให้41.media.tumblr.com
ฉันเห็นว่าเป็นเซิร์ฟเวอร์ที่จัดการโดย Highwinds (!?!?) ในทางตรงกันข้าม URL เริ่มต้นที่ผู้ใช้ดั้งเดิมส่งผ่านนั้นกำลังใช้36.media.tumblr.com
ชื่อโฮสต์และคุณสามารถดูได้ว่าจัดการโดยเซิร์ฟเวอร์ Amazon CloudFront CDN
ซึ่งทั้งหมดนี้คือสิ่งที่ฉันพูดไว้ก่อนหน้านี้ทั้งหมดนี้น่าจะเป็นปัญหาด้านเซิร์ฟเวอร์กับ Tumblr และการจัดการ CDN ของพวกเขา แต่จากด้านข้างของฉัน - ใน Brooklyn, New York, USA - ฉันเห็นชัดเจนว่าเนื้อหาถูกส่งตามที่คาดหวังจากเซิร์ฟเวอร์ Highwinds CDN รวมถึง Amazon Amazon CloudFront CDN เซิร์ฟเวอร์ ที่ EdgeCast URLS เหล่านี้มาจากไหนหรือทำไมพวกเขาถึงล้มเหลวนั้นอยู่นอกเหนือการควบคุมของใคร ๆ ในฝั่งไคลเอ็นต์ นี่จะเป็นสิ่งที่ต้องติดต่อเจ้าหน้าที่ด้านเทคนิคของ Tumblr เพราะไม่มีทางที่ผู้ใช้คอมพิวเตอร์เดสก์ท็อปสามารถแก้ไขปัญหานี้ได้
ไอเดียการปลิงภาพ
อาจไม่เกี่ยวข้องอีกต่อไป แต่เพื่อการอ้างอิง
คุณระบุสิ่งนี้ให้เบาะแสฉัน:
ใช้wget
งานลิงค์โดยตรงของภาพได้
เว็บไซต์หลายแห่งมีกฎระเบียบอยู่ - โดยปกติจะตั้งค่าผ่าน Apache - ซึ่งป้องกันการรั่วไหลของภาพ รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของกฎเหล่านี้มีให้ที่นี่และสรุปดังนี้
การใช้. htaccess คุณสามารถไม่อนุญาตการเชื่อมโยงร้อนๆบนเซิร์ฟเวอร์ของคุณดังนั้นผู้ที่พยายามเชื่อมโยงไปยังไฟล์รูปภาพหรือไฟล์ CSS บนเว็บไซต์ของคุณอาจถูกบล็อก (คำขอที่ล้มเหลวเช่นภาพที่ไม่สมบูรณ์) หรือแสดงเนื้อหาอื่น ( เช่น: ภาพของผู้ชายที่โกรธ)
จากคำอธิบายของคุณและความจริงที่ว่าคุณสามารถเข้าถึงภาพผ่าน - wget
ทำให้ฉันเชื่อว่าภาพที่คุณมีปัญหาไม่ได้ถูกโฮสต์ใน Tumblr โดยผู้ใช้ แต่เป็นภาพที่วางไว้ในบล็อก Tumblr แต่โฮสต์ไว้ที่อื่น เว็บไซต์.
เมื่อวางกระบวนการ leeching อิมเมจมาตรฐานไว้แล้วการดูอิมเมจที่ฝังในไซต์หนึ่งที่โฮสต์บนไซต์อื่นซึ่งบล็อก leeching จะส่งผลให้ลิงค์อิมเมจแตกหรืออาจเป็น“ Stop Leeching!” กำลังส่งคืนรูปภาพ นี่เป็นเพราะกฎการป้องกันการรั่วขั้นพื้นฐาน - เช่นในหน้าตัวอย่าง - ผู้อ้างอิงรูปภาพ crosscheck เพื่อให้แน่ใจว่าหน้าขอภาพตรงกับโดเมนที่โฮสต์ภาพ
ดังนั้นเมื่อคุณเข้าถึงภาพผ่านทางwget
คุณกำลังเข้าถึงภาพโดยตรง ดังนั้นกฎการ leeching ของรูปภาพจะไม่เตะดังนั้นคุณสามารถรับภาพผ่านwget
ได้ แต่จะไม่ถูกฝังในอีกหน้า