إعداد Let’s Encrypt + غير-www > www

نجحتُ أخيرًا في جعلها تعمل، وفكّرتُ في تجميع كل شيء في حال احتاجه أحدكم.
تم تجميع هذه المعلومات من مواضيع مختلفة في هذا المنتدى. شكرًا لـ @brahn و @techAPJ.
يفترض هذا النص أنك أكملت الإعداد الأولي لـ Let’s Encrypt:

بعد الانتهاء من ذلك، يجب إضافة ما يلي إلى ملف app.yml في قسم الـ hooks. سيقوم هذا الأمر بشيئين:

  1. إعداد شهادة SSL لكل من example.com و www.example.com. فقط استبدل example.com باسم نطاقك.
  2. إعادة توجيه example.com إلى www.example.com.

إذا كان أي شخص يعرف كيفية تحسين هذا، فالرجاء إخباري.

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git


  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 443;
            server_name example.com;
            return 301 $scheme://www.example.com$request_uri;
          }
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /-k 4096 -w \\/var\\/www\\/discourse\\/public/
        to: |
          -d www.example.com -d example.com -k 4096 -w /var/www/discourse/public

    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /-k 4096 --force -w \\/var\\/www\\/discourse\\/public/
        to: |
          -d www.example.com -d example.com -k 4096 --force -w /var/www/discourse/public

    - 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 للث$\n

كما هو معتاد، تذكر أن المسافات البادئة والترتيب مهمان للغاية في ملف app.yml. بعد الانتهاء من التعديل، يجب عليك إعادة بناء الحاوية باستخدام الأمر التالي:

cd /var/discourse
./launcher rebuild app
6 إعجابات

I wonder if this part is needed, since we already have the “force https” option in Admin settings.
@brahn, this is your part of the code, can you explain why is this necessary?

- replace:
    filename: "/etc/nginx/conf.d/discourse.conf"
    from: /return 301 https.+/
    to: |
      return 301 https://$host$request_uri;
إعجاب واحد (1)

I’m not really sure, does that setting redirect or just block non-https requests?

إعجاب واحد (1)

أحتاج إلى تقديم سياق كامل.
لدي إصدار حديث نسبيًا وهو 2.7.0.beta7، لكن إعدادات www و non-www غير صحيحة. أحاول إصلاحها.

جربت التعليمات أعلاه (نسخ/لصق)، والآن توقف عمل non-www.

إعجاب واحد (1)

هذا المسار موجود داخل الحاوية، لذا إذا كنت تبحث في نظام المضيف (host OS)، فأنت تبحث في المكان الخطأ.

يمكنك الاطلاع على إعداد Let’s Encrypt مع نطاقات متعددة والتحقق مما إذا كانت التعليمات مختلفة. يمكنك ببساطة إضافة النطاق الآخر بنفس الطريقة.

يمكنك أيضًا الاطلاع على https://www.forcewww.com/

4 إعجابات

يبدو أن هذا لم يعد يعمل ويتسبب في عدم إمكانية الوصول إلى نسختي. تمكنت من إعادتها إلى حالة العمل باستخدام هذا بدلاً من ذلك:

إعجابَين (2)