Redirección 301 infinita con configuración de proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy inverso proxy

Hola, tengo un problema al instalar Discourse. Cada vez que intento conectarme a mi sitio web, obtengo una redirección infinita 301.

Aquí está la configuración de Nginx de mi HOST para la instancia de 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; # gestionado por Certbot
    ssl_certificate /etc/letsencrypt/live/dis.ob**********ie.fr/fullchain.pem; # gestionado por Certbot
    ssl_certificate_key /etc/letsencrypt/live/dis.ob**********ie.fr/privkey.pem; # gestionado por Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # gestionado por Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionado por Certbot

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

        server_name dis.ob**********ie.fr;
    listen 80;
    return 404; # gestionado por Certbot
}

Aquí está mi 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"
## Descomenta estas dos líneas si deseas añadir Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para más detalles
expose:
    - "8150:80"   # http

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Establece db_shared_buffers a un máximo del 25% de la memoria total.
  ## será establecido automáticamente por bootstrap según la RAM detectada, o puedes anularlo
  db_shared_buffers: "1024MB"

  ## puede mejorar el rendimiento de la ordenación, pero aumenta el uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (por defecto: 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

  ## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
  ## será establecido automáticamente por bootstrap según las CPUs detectadas, o puedes anularlo
  UNICORN_WORKERS: 4

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  ## Requerido. Discourse no funcionará con un número IP simple.
  DISCOURSE_HOSTNAME: dis.ob**********ie.fr
  ## Descomenta si deseas que el contenedor se inicie con el mismo
  ## nombre de host (-h option) que el especificado arriba (por defecto "$hostname-$config")
  DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que se convertirán en administradores y desarrolladores
  ## en el registro inicial, por ejemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'admin@ob**********ie.fr

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  # Se requieren la DIRECCIÓN SMTP, el nombre de usuario y la contraseña
  # ADVERTENCIA: el carácter '#' en la contraseña SMTP puede causar problemas.
  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           # (opcional, por defecto true)
  DISCOURSE_SMTP_DOMAIN: ob**********ie.fr
  DISCOURSE_NOTIFICATION_EMAIL: noreply@ob**********ie.fr

  ## Si añadiste la plantilla de Lets Encrypt, descomenta abajo para obtener un certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## La dirección CDN http o https para esta instancia de Discourse (configurada para tirar)
  ## consulta https://meta.discourse.org/t/14857 para más detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## La clave de la dirección IP de geolocalización de Maxmind para la búsqueda de direcciones IP
  ## consulta https://meta.discourse.org/t/-/137387/23 para más detalles
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulta https://meta.discourse.org/t/19157 para más detalles
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Cualquier comando personalizado para ejecutar después de la compilación
run:
  - exec: echo "Inicio de comandos personalizados"
  ## Si deseas establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y cambia:
  ## Después de recibir el primer correo electrónico de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin de comandos personalizados"

Muchas gracias a todos por el apoyo :heart:

No se admite el uso de un puerto no estándar. Necesitas tener los puertos 443 y 80 abiertos. Si has reconstruido varias veces, tienes límites de tasa con Let’s Encrypt y necesitarás esperar una semana o añadir un segundo nombre de host como se describe en Configurar Let’s Encrypt con Múltiples Dominios.

1 me gusta

¿Te refieres a que el puerto no estándar no es compatible en el host o en el guest?
Estaba siguiendo este tutorial:

Donde dice:

Si estás usando algún otro proxy inverso que no pueda usar un web socket, puedes exponer un puerto diferente en la sección anterior, como - 8080:80.

No mencionaste el proxy inverso. El problema probablemente esté ahí, no en Discourse. Pero creo que necesitarás eliminar las plantillas de SSL y Let’s Encrypt y encargarte de eso en el proxy inverso.

Gracias, ahora tengo un 502 Bad Gateway al intentar conectarme.
Intentó conectarse localmente a 127.0.0.1:8150, pero no obtuvo nada.
Aquí está mi nuevo 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"
## Descomenta estas dos líneas si deseas agregar 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

¡Está bien, lo encontré! El Nginx invitado estaba escuchando en el socket, también puse mi host en el socket. ¡Muchassss gracias!

1 me gusta

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