لذا فقد وجدت أخيرًا الوقت للعمل على أدلة “إعداد Let’s Encrypt مع نطاقات متعددة” و"توجيه نطاق واحد/عدة نطاقات إلى مثيل Discourse الخاص بك".
لقد أضفت الكثير إلى ملف containers/app.yml أكثر مما أضفت أنت، ويبدو أن كل شيء يعمل بشكل صحيح تقريبًا.
يتم استضافة Discourse الخاص بي على النطاق الفرعي www، وكان هدفي توجيه طلبات http و https من النطاق الرئيسي (apex domain) إلى النطاق الفرعي www. وهذا يعمل الآن، ولكن إذا ذهبت إلى https://mydomain.com، فسيتم التوجيه، لكن Chrome يظهر التحذير التالي في وحدة التحكم:
Redirecting navigation example.com -> www.example.com because the server presented a certificate valid for www.example.com but not for example.com. To disable such redirects launch Chrome with the following flag: --disable-features=SSLCommonNameMismatchHandling
إليك الإضافات الخاصة بي في ملف app.yml:
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.com -d www.example.com --keylength"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /return 301 https.+/
to: |
return 301 https://$host$request_uri;
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /gzip on;[^\}]+\}/m
to: |
gzip on;
add_header Strict-Transport-Security 'max-age=31536000'; # تذكر الشهادة لمدة عام واتصل تلقائيًا بـ HTTPS لهذا النطاق
after_web_config:
- replace:
filename: /etc/nginx/nginx.conf
from: /sendfile.+on;/
to: |
server_names_hash_bucket_size 64;
sendfile on;
- file:
path: /etc/nginx/conf.d/discourse_redirect_1.conf
contents: |
server {
listen 80;
listen 443 ssl;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
هل يبدو هذا صحيحًا؟ إذا كان الأمر كذلك، فهل هناك حل لمشكلة عدم تطابق اسم الشهادة؟
تعديل: لدي سجلان من نوع A، أحدهما للنطاق الفرعي www والآخر يستخدم @ لالتقاط جميع الطلبات الموجهة إلى النطاق الرئيسي. كلاهما يشير إلى عنوان IP الخاص بـ Digital Ocean droplet الخاص بي. أفترض أن هذا صحيح أيضًا؟
شكرًا لك، أنا لا أستخدم Cloudflare حاليًا لذا لم أصادف تلك من قبل. سلكت مسارًا مختلفًا واتبعت الأدلة المذكورة أعلاه ونجحت إلى حد كبير في حل مشكلتي. لقد نشرت في الوقت الذي كنتُ أقدّم فيه ردّي أعلاه.
يرجى التحقق من هذا الموقع؛ هل يحتوي على جميع إعادة التوجيه التي تحتاجها؟ تم ذلك باستخدام كتلة replace واحدة فقط (انظر أعلاه) وإعدادات DNS هذه (لقد قمت بإخفاء سجلات TXT الخاصة بالبريد الإلكتروني فقط):
تغيير حدث في 9 سبتمبر من العام الماضي خرق النهج الذي تتبعه، وبما أن التنفيذ يقع خارج التثبيت القياسي، لم يتم نشر الحل حتى 31 أكتوبر. إذا نظرت إلى الموضوع الذي اتبعته وسجل التعديلات في الويكي، فسيكون الأمر موثقًا بوضوح.
بما أنك لا تقوم بشيء يستدعي الغوص في إعدادات إضافية، فإنني أنصحك بعدم القيام بذلك. من ناحية أخرى، عندما يحدث تغيير في Let’s Encrypt وتتأثر به، يمكننا إرجاعك إلى هذا الموضوع.