Einrichtung von Let's Encrypt + nicht-www bb www

Ich habe es endlich zum Laufen gebracht und möchte alles zusammenfassen, falls jemand es benötigt.
Diese Informationen stammen aus verschiedenen Themen in diesem Forum. Vielen Dank an @brahn und @techAPJ.
Dies setzt voraus, dass Sie die anfängliche Let’s Encrypt-Einrichtung abgeschlossen haben:

Nachdem Sie dies erledigt haben, müssen im Abschnitt „hooks" der Datei app.yml folgende Änderungen vorgenommen werden. Dies bewirkt zwei Dinge:

  1. Einrichtung von SSL für sowohl example.com als auch www.example.com. Ersetzen Sie einfach example.com durch Ihre Domain.
  2. Umleitung von example.com auf www.example.com.

Falls jemand weiß, wie man dies verbessern kann, lassen Sie es mich bitte wissen.

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'; # das Zertifikat für ein Jahr speichern und automatisch mit HTTPS verbinden für th$

wie immer, denken Sie daran, dass Abstände und Einrückungen in der Datei app.yml extrem wichtig sind. Nach dem Bearbeiten müssen Sie den Container mit folgendem Befehl neu erstellen:

cd /var/discourse
./launcher rebuild app
6 „Gefällt mir“

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 „Gefällt mir“

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

1 „Gefällt mir“

Ich muss den vollständigen Kontext angeben. Ich habe eine recht aktuelle Version 2.7.0.beta7, aber meine Konfiguration für www und non-www ist falsch. Ich versuche, sie zu beheben.

Ich habe die oben genannte Anleitung befolgt (Kopieren/Einfügen), und jetzt funktioniert non-www nicht mehr.

1 „Gefällt mir“

Dieser Pfad befindet sich innerhalb des Containers. Wenn Sie also auf dem Host-Betriebssystem suchen, sind Sie am falschen Ort.

Sie könnten die Einrichtung von Let’s Encrypt mit mehreren Domains prüfen und sehen, ob die Anweisungen anders lauten. Sie würden die andere Domain einfach auf die gleiche Weise hinzufügen.

Sie können sich auch https://www.forcewww.com/ ansehen.

4 „Gefällt mir“

Dies scheint nicht mehr zu funktionieren und macht meine Instanz unerreichbar. Ich habe sie mit Folgendem wieder funktionsfähig gemacht:

2 „Gefällt mir“