Redirection infinie 301 avec configuration de proxy inverse

Bonjour, j’ai un problème lors de l’installation de Discourse. Chaque fois que j’essaie de me connecter à mon site web, je reçois une redirection infinie 301.

Voici la configuration Nginx de mon instance Discourse :

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; # géré par Certbot
    ssl_certificate /etc/letsencrypt/live/dis.ob**********ie.fr/fullchain.pem; # géré par Certbot
    ssl_certificate_key /etc/letsencrypt/live/dis.ob**********ie.fr/privkey.pem; # géré par Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # géré par Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # géré par Certbot

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

        server_name dis.ob**********ie.fr;
    listen 80;
    return 404; # géré par Certbot
}

Voici mon fichier 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"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## Quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
expose:
    - "8150:80"   # http

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
  ## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
  db_shared_buffers: "1024MB"

  ## peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
  #db_work_mem: "40MB"

  ## Quelle révision Git ce conteneur doit-il utiliser ? (défaut : 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

  ## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs de processeur.
  ## sera défini automatiquement par bootstrap en fonction des processeurs détectés, ou vous pouvez le remplacer
  UNICORN_WORKERS: 4

  ## TODO : Le nom de domaine auquel cette instance Discourse répondra
  ## Obligatoire. Discourse ne fonctionnera pas avec un simple numéro IP.
  DISCOURSE_HOSTNAME: dis.ob**********ie.fr
  ## Décommentez si vous souhaitez que le conteneur démarre avec le même
  ## nom d'hôte (-h) que celui spécifié ci-dessus (par défaut "$hostname-$config")
  DOCKER_USE_HOSTNAME: true

  ## TODO : Liste des e-mails délimités par des virgules qui seront rendus administrateurs et développeurs
  ## lors de la première inscription, par exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'admin@ob**********ie.fr

  ## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
  # L'adresse, le nom d'utilisateur et le mot de passe SMTP sont requis
  # ATTENTION, le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
  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           # (facultatif, par défaut true)
  DISCOURSE_SMTP_DOMAIN: ob**********ie.fr
  DISCOURSE_NOTIFICATION_EMAIL: noreply@ob**********ie.fr

  ## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour tirer)
  ## consultez https://meta.discourse.org/t/14857 pour plus de détails
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## La clé d'adresse IP de localisation Maxmind pour la recherche d'adresses IP
  ## consultez https://meta.discourse.org/t/-/137387/23 pour plus de détails
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Les plugins vont ici
## consultez https://meta.discourse.org/t/19157 pour plus de détails
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Toutes les commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail "De" pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit s'exécuter qu'une seule fois.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin des commandes personnalisées"

Merci à tous pour votre soutien :heart:

L’utilisation d’un port non standard n’est pas prise en charge. Vous devez avoir les ports 443 et 80 ouverts. Si vous avez reconstruit plusieurs fois, vous avez atteint les limites de taux avec Let’s Encrypt et devrez attendre une semaine ou ajouter un deuxième nom d’hôte comme décrit dans Configuration de Let’s Encrypt avec plusieurs domaines.

1 « J'aime »

Voulez-vous dire que le port non standard n’est pas pris en charge sur l’hôte ou l’invité ?
Je suivais ce tutoriel :

Où il est dit :

Si vous utilisez un autre proxy inverse qui ne peut pas utiliser de websocket, vous pouvez exposer un autre port dans la section ci-dessus comme - 8080:80.

Vous n’avez pas mentionné le proxy inverse. Le problème se situe probablement là, pas dans Discourse. Mais, je pense que vous devrez supprimer les modèles ssl et lets encrypt et gérer cela dans le proxy inverse.

Merci, j’ai maintenant une erreur 502 Bad Gateway en essayant de me connecter.
Il a essayé de se connecter à 127.0.0.1:8150 localement, mais n’a rien reçu.
Voici mon nouveau 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"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
#- "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

C’est bon, j’ai trouvé ! Le Nginx guest écoutait sur la socket, j’ai mis mon host sur la socket aussi. Merciiii

1 « J'aime »

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