Unendliche 301-Weiterleitung mit Reverse-Proxy-Einrichtung

Hallo, ich habe ein Problem bei der Installation von Discourse. Jedes Mal, wenn ich versuche, auf meine Website zuzugreifen, erhalte ich eine endlose 301-Umleitung.

Hier ist meine Nginx-Konfiguration für die Discourse-Instanz:

server
{
        server_name dis.ob**********ie.fr;
        access_log /var/log/nginx/dis_access.log;
        error_log /var/log/nginx/dis_error.log;
        location / {
                proxy_pass http://dis.ob**********ie.fr:8150;
                #http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
                proxy_set_header Host $http_host;
                proxy_http_version 1.1;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
        }
    listen 443 ssl; # verwaltet von Certbot
    ssl_certificate /etc/letsencrypt/live/dis.ob**********ie.fr/fullchain.pem; # verwaltet von Certbot
    ssl_certificate_key /etc/letsencrypt/live/dis.ob**********ie.fr/privkey.pem; # verwaltet von Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # verwaltet von Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # verwaltet von Certbot

}
server
{
    if ($host = dis.ob**********ie.fr) {
        return 301 https://$host$request_uri;
    } # verwaltet von Certbo

        server_name dis.ob**********ie.fr;
    listen 80;
    return 404; # verwaltet von Certbot
}

Hier ist meine app.yml:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Diese beiden Zeilen auskommentieren, wenn Sie Lets Encrypt (https) hinzufügen möchten
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## Welche TCP/IP-Ports soll dieser Container verfügbar machen?
## Wenn Sie möchten, dass Discourse einen Port mit einem anderen Webserver wie Apache oder Nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
    - "8150:80"   # http

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Setzen Sie db_shared_buffers auf maximal 25 % des Gesamtspeichers.
  ## wird automatisch vom Bootstrap basierend auf dem erkannten RAM gesetzt, oder Sie können überschreiben
  db_shared_buffers: "1024MB"

  ## kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
  #db_work_mem: "40MB"

  ## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
  #version: tests-passed

env:
  LC_ALL: fr_FR.UTF-8
  LANG: fr_FR.UTF-8
  LANGUAGE: fr_FR.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Speicher und CPU-Kernen ab.
  ## wird automatisch vom Bootstrap basierend auf den erkannten CPUs gesetzt, oder Sie können überschreiben
  UNICORN_WORKERS: 4

  ## TODO: Der Domainname, auf den diese Discourse-Instanz reagieren wird
  ## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
  DISCOURSE_HOSTNAME: dis.ob**********ie.fr
  ## Auskommentieren, wenn der Container mit demselben Hostnamen (-h Option) gestartet werden soll, wie oben angegeben (Standard "$hostname-$config")
  DOCKER_USE_HOSTNAME: true

  ## TODO: Liste der per Komma getrennten E-Mails, die bei der ersten Registrierung zu Administratoren und Entwicklern gemacht werden
  ## Beispiel 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'admin@ob**********ie.fr

  ## TODO: Der SMTP-Mailserver, der zum Überprüfen neuer Konten und zum Senden von Benachrichtigungen verwendet wird
  # SMTP-ADRESSE, Benutzername und Passwort sind erforderlich
  # ACHTUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
  DISCOURSE_SMTP_ADDRESS: mail.ob**********ie.fr
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: discourse@ob**********ie.fr
  DISCOURSE_SMTP_PASSWORD: "*********************"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard true)
  DISCOURSE_SMTP_DOMAIN: ob**********ie.fr
  DISCOURSE_NOTIFICATION_EMAIL: noreply@ob**********ie.fr

  ## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## Die HTTP- oder HTTPS-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
  ## siehe https://meta.discourse.org/t/14857 für Details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## Der Maxmind Geolocation IP-Adressschlüssel für die IP-Adressensuche
  ## siehe https://meta.discourse.org/t/-/137387/23 für Details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins gehen hier hin
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Alle benutzerdefinierten Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn Sie die E-Mail-Adresse 'Von' für Ihre erste Registrierung festlegen möchten, kommentieren Sie sie aus und ändern Sie sie:
  ## Nachdem Sie die erste Registrierungs-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Ende der benutzerdefinierten Befehle"

Vielen Dank für Ihre Unterstützung :heart:

Die Verwendung eines nicht standardmäßigen Ports wird nicht unterstützt. Sie müssen die Ports 443 und 80 geöffnet haben. Wenn Sie mehrmals neu erstellt haben, haben Sie Ratenbegrenzungen bei Let’s Encrypt und müssen eine Woche warten oder einen zweiten Hostnamen hinzufügen, wie in Let’s Encrypt mit mehreren Domains einrichten beschrieben.

1 „Gefällt mir“

Meinen Sie, dass der nicht standardmäßige Port auf dem Host oder dem Gast nicht unterstützt wird?
Ich habe dieses Tutorial befolgt:

Wo es heißt:

Wenn Sie einen anderen Reverse-Proxy verwenden, der keine Web-Sockets verwenden kann, können Sie stattdessen einen anderen Port im obigen Abschnitt freigeben, z. B. - 8080:80.

Sie haben den Reverse-Proxy nicht erwähnt. Das Problem liegt wahrscheinlich dort, nicht bei Discourse. Aber ich denke, Sie müssen die SSL- und Let’s Encrypt-Vorlagen entfernen und dies im Reverse-Proxy handhaben.

Vielen Dank, ich erhalte jetzt eine 502 Bad Gateway, wenn ich versuche, eine Verbindung herzustellen.
Es wurde versucht, lokal eine Verbindung zu 127.0.0.1:8150 herzustellen, aber es kam nichts an.
Hier meine neue discours app.yml:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Diese beiden Zeilen auskommentieren, wenn Sie Lets Encrypt (https) hinzufügen möchten
#- "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"

expose:
    - "8150:80"   # http

params:
  db_default_text_search_config: "pg_catalog.english"
  db_shared_buffers: "1024MB"

env:
  LC_ALL: fr_FR.UTF-8
  LANG: fr_FR.UTF-8
  LANGUAGE: fr_FR.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  UNICORN_WORKERS: 4
  DISCOURSE_HOSTNAME: dis.ob******ie.fr
  DOCKER_USE_HOSTNAME: true
  DISCOURSE_DEVELOPER_EMAILS: 'admin@ob******ie.fr'
  DISCOURSE_SMTP_ADDRESS: mail.ob******ie.fr
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: discourse@ob******ie.fr
  DISCOURSE_SMTP_PASSWORD: "Safe Password"
  DISCOURSE_SMTP_DOMAIN: ob******ie.fr
  DISCOURSE_NOTIFICATION_EMAIL: noreply@ob******ie.fr
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

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

run:
  - exec: echo "Beginning of custom commands"
  - exec: echo "End of custom commands"
        cd: $home/plugins

Es ist gut, ich habe es gefunden! Der Nginx-Gast hörte auf dem Socket, ich habe meinen Host auch auf den Socket gelegt. Danke!

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.