# منع المجهولين من تنزيل الملفات غير المتوافقة مع CDN

**URL:** https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513
**Category:** Support
**Created:** [20 يونيو 2022، 5:12م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513 "2022-06-20T17:12:56Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [20 يونيو 2022، 5:12م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/1 "2022-06-20T17:12:56Z")

</div>

لدي موقع تعود فيه ملفات mp4 برمز 404.

تم تعيين `authorized_extensions` على `*`. يتم تحميل الملف بشكل جيد. أراه في نظام الملفات. الأذونات صحيحة. `file` يقول إنه ملف MP4. السجل في rails يبدو جيدًا:

```plaintext
[1] pry(main)> u=Upload.find(196082)
=> #<Upload:0x00005601a1b56348
 id: 196082,
 user_id: 1,
 original_filename: "PXL_20220617_184736219.mp4",
 filesize: 9328093,
 width: nil,
 height: nil,
 url: "/uploads/default/original/3X/5/6/5679d94dfce852f780afa5fcb7f1a29d810cc8fc.mp4",
 created_at: Fri, 17 Jun 2022 18:53:41.130790000 UTC +00:00,
 updated_at: Fri, 17 Jun 2022 18:53:41.176664000 UTC +00:00,
 sha1: "5679d94dfce852f780afa5fcb7f1a29d810cc8fc",
 origin: nil,
 retain_hours: nil,
 extension: "mp4",
 thumbnail_width: nil,
 thumbnail_height: nil,
 etag: nil,
 secure: false,
 access_control_post_id: nil,
 original_sha1: nil,
 verification_status: 1,
 animated: nil,
 security_last_changed_at: nil,
 security_last_changed_reason: nil>

```

لكن الوصول إليه يعيد 404. كانت هناك ميزات جديدة قليلة وإصلاحات للأخطاء لملفات mp4 مؤخرًا، لكنني قمت للتو بالترقية ولا يزال الأمر لا يعمل. لا أعرف أين أبحث.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [23 يونيو 2022، 9:07م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/2 "2022-06-23T21:07:33Z")

</div>

المشكلة هي أن إعدادات nginx تسمح فقط بأنواع ملفات معينة. نقل هذا إلى خطأ.

في `discourse.conf` يوجد هذا المقطع:

```plaintext
      # this allows us to bypass rails
      location ~* \.(gif|png|jpg|jpeg|bmp|tif|tiff|ico|webp)$ {
          add_header Access-Control-Allow-Origin *;
          try_files $uri =404;
      }

```

لقد أضفت `mp3` و `mp4` إلى أنواع الملفات (بعد `webp` وتعمل ملفات mp4 الآن) إلى discourse.conf داخل الحاوية. أرى “bypass rails” في `discourse_docker` `config/nginx.sample.conf`. لا أرى كيف يصل إلى القالب داخل docker، لذلك لا أعرف كيف أكتشف متى حدث هذا.

لديهم `*` في أنواع الملفات المسموح بها. لا أعرف ما إذا كان هناك أي سحر يسمح لملفات mp3/mp4 بالعمل إذا تم تعدادها في إعدادات الموقع، لكنني لا أرى كيف يمكن أن يكون ذلك.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [23 يونيو 2022، 10:49م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/3 "2022-06-23T22:49:08Z")

</div>

> [@pfaffman](#):
>
> المشكلة هي أن إعدادات nginx تسمح فقط بأنواع ملفات معينة

ولكن يجب أن يعمل التنزيل إذا لم يتجاوز Rails أيضًا.

هناك مسار لذلك

`get "uploads/:site/original/:tree:sha(.:extension)" => "uploads#show", constraints: { site: /\w+/, tree: /([a-z0-9]+\/)+/i, sha: /\h{40}/, extension: /[a-z0-9\._]+/i }`

ويجب أن ترسل طريقة [show الملف](https://github.com/discourse/discourse/blob/main/app/controllers/uploads_controller.rb#L81-L101). سيكون إعداد nginx أكثر كفاءة فقط عن طريق تجاوز Rails، ولكن هذا ليس مطلوبًا.

أوه.. الامتدادات المصرح بها هي فقط لتفويض التحميل، وليس للتنزيلات (أي أن امتدادًا غير موجود في هذه القائمة لا ينبغي أن يمنع تنزيل ملف).

أنا غير قادر على تكرار هذا في أحدث الاختبارات التي تم تمريرها، لذا قد ترغب في إعادته إلى #Support 😉

تحرير: لقد بحثت عن الموقع ويبدو أن لديك مشاكل أخرى.

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/6/5/7655486681d56ac8dc989cf6180e5000fc783d47.png)

الآن عندما أقوم بتنزيل الملف باستخدام wget، فإنه يعمل.

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/e/b/feb8208cb99ca6fdf133193d1c0421add8e46a62.png)

(تحرير 2 قد يكون هذا بسبب أنك أضفت امتداد mp4 إلى إعدادات nginx؟ ومع ذلك، بالنسبة لي، إنه يعمل فقط دون الحاجة إلى إعدادات إضافية)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [24 يونيو 2022، 12:05ص UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/4 "2022-06-24T00:05:21Z")

</div>

شكرًا لك! سألقي نظرة على ذلك أول شيء. أعتقد أنني كان يجب أن أجرب الوضع الآمن!

أنا مرتبك جدًا بسبب عامل الخدمة هذا.

ليس خطأ.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [24 يونيو 2022، 12:47م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/5 "2022-06-24T12:47:38Z")

</div>

لا أزال لا أفهم رسالة عامل الخدمة هذه، لكنني قمت بإيقاف `prevent_anons_from_downloading_files` وهي تعمل الآن. يبدو أن إعداد “prevent\_anons” غير متوافق مع شبكة توصيل المحتوى (CDN)؟

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [24 يونيو 2022، 1:59م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/6 "2022-06-24T13:59:21Z")

</div>

ولكن لم يتم استرداد التحميلات من شبكة توصيل المحتوى (CDN) على هذا الموقع؟ إنه يشير فقط إلى موقع على `www`

 ![صورة](https://global.discourse-cdn.com/meta/original/4X/6/b/3/6b3d3da746b2dd0bab0f2a3608780dfa87d170e9.png)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [24 يونيو 2022، 2:36م UTC](https://meta.discourse.org/t/prevent-anons-from-downloading-files-incompatible-with-cdn/230513/7 "2022-06-24T14:36:47Z")

</div>

> [@RGJ](#):
>
> ولكن لم يتم استرداد التحميلات من شبكة توصيل المحتوى (CDN) على هذا الموقع؟ إنه يشير فقط إلى موقع على `www`

إذًا أنا في حيرة أكبر. أفترض أن هذه المشاركة لم تتم إعادة خبزها بعد تعريف شبكة توصيل المحتوى (CDN).

ولكن `https://www.turiver.com/t/argentina-la-sociedad-perdida/117158/7909` يتم تحميله من شبكة توصيل المحتوى (CDN)، وتغيير الإعداد أصلحه.

أرى أيضًا الكثير من أخطاء 404 في وحدة التحكم، ولكنه موقع قياسي ذو حاويتين مع هذه الإضافات فقط:

```plaintext
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-chat-integration.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-canned-replies.git
          - git clone https://github.com/discourse/discourse-chat

```

وأعتقد أنك تنظر إلى `https://www.turiver.com/t/argentina-la-sociedad-perdida/117158/8017` والذي يتم سحبه من شبكة توصيل المحتوى (CDN) عندما أنظر، سواء كنت مسجلاً الدخول أو غير مسجل الدخول.
