Generar enlaces https en el puerto 80

Necesito implementar el servidor de modo que escuche en el puerto 80 pero proporcione enlaces en HTTPS. ¿Cómo puedo solucionar este problema?

Mi configuración actual funciona así y todos los enlaces están en HTTP:
expose:
# - “443:443” # https
- “80:80” # https

He intentado cambiar el nombre a 443, pero falla.

No creo que eso sea posible.

1 me gusta

Let’s Encrypt es bastante estricto, así que no creo que proporcionen certificados SSL para ningún puerto que no sea el 443, por razones de seguridad.

2 Me gusta

¿Quizás activar la configuración del sitio force https?

1 me gusta

¿Podrías explicarme por qué necesitas hacer esto?

1 me gusta

Hay un servidor interno en el que se ejecuta Discourse y que está abierto para escuchar en el puerto 80. Cuando un visitante solicita un sitio, siempre se abre en HTTPS (redirige), pero todos los enlaces están en HTTP. No controlo esta infraestructura, pero además del puerto 80 no tengo otra salida.

Temo que en mi caso esto no funcionará, ya que en realidad no trabajo con HTTPS.

Puedo desactivarlo, pero me parece que esto no resolverá el problema, ya que no es posible habilitar HTTPS en el puerto 80 debido a SSL.

Discourse no admite ejecutarse en puertos no estándar.

Esto incluye ejecutar https en el puerto 80.

1 me gusta

¿Te refieres a que tienes una configuración de proxy inverso en otro lugar que maneja SSL para todos tus sitios, incluido Discourse?

1 me gusta

¿Ya lo probaste?

Entonces, ¿qué estás intentando hacer?

¿Eso no significa que quieres que los enlaces en las páginas servidas sean HTTPS y que estás manejando HTTPS de alguna otra manera?

Lo siento, no termino de entender tus publicaciones.

Dijiste,

Necesito configurar el servidor para que escuche en el puerto 80 pero proporcione enlaces en HTTPS. ¿Cómo puedo resolver este problema?

Si te entiendo correctamente, quieres que todo el tráfico HTTP del puerto 80 se redirija al puerto 443 HTTPS y que no se envíe tráfico HTTPS por el puerto 80, sino solo redirigir el puerto 80 al puerto 443.

De ser así, así es como se configura la mayoría de los servidores web; y, por ejemplo, si usas LetsEncrypt para configurar el tráfico del puerto 443 con Apache2 o nginx, LetsEncrypt te preguntará si deseas configurar esta redirección y lo hará por ti.

Como preguntó @Falco, ¿cuál es tu configuración exacta? ¿Estás ejecutando un servidor web como nginx o Apache2 frente a Discourse como proxy inverso?

De ser así, al configurar LetsEncrypt en nginx o Apache2, el software de configuración de LetsEncrypt establecerá la “redirección de todo el tráfico HTTP a HTTPS” por ti (si seleccionas “sí” cuando el cuadro de diálogo de configuración lo pregunte).

2 Me gusta

Sí, me entendieron correctamente


Ya no puedo abrir otros puertos y hay un proxy inverso que hace que el sitio sea HTTPS, pero no los enlaces dentro de Discourse.

Hmm, mi flujo de salida de Discourse siempre es 80. No puedo escuchar otros puertos, y no hay nada de Let’s Encrypt al respecto.

Hola @anton21m

Sí, ahora entendemos más claramente que tienes un proxy inverso frente a tu contenedor.

¿Qué proxy inverso estás utilizando, nginx? ¿Apache2?

servidor: nginx/1.14.1
Pero no tengo acceso a él
https://forum.qpay.uz/

Puedes ver que todos los enlaces son http

¡Qué sitio nuevo de Discourse tan limpio y bien presentado, @anton21m!

Ahora entendemos perfectamente tu situación. Gracias.

Si no tienes acceso a nginx ni al sistema, debes pedirle a tu administrador del sistema que instale LetsEncrypt y agregue SSL a tu sitio.

Esa es realmente tu única opción si planeas quedarte con ese proveedor de alojamiento y no tienes acceso a nginx.

Lamentamos informarte esto. ¿Quizás deberías considerar otro proveedor de alojamiento?

1 me gusta

Claramente, entonces esto es imposible !!!
Me gustaría encontrar una solución como esta

Esa “solución deseada” de la que hablas es exactamente lo que te hemos aconsejado que hagas; por ejemplo, configurar tu servidor web para redirigir el tráfico del puerto 80 al puerto 443.

Y esa solución requiere que modifiques el servidor web, igual que te hemos aconsejado.

Así que, @anton21m, estamos empezando a dar vueltas en círculo…

Pero déjame repetírtelo de nuevo, solo para ti, @anton21m :slight_smile: :slight_smile: ¡porque queremos que tengas éxito!

Necesitas tener acceso al servidor web y configurarlo de modo que el tráfico del puerto 80 se redirija al puerto 443, y también necesitas configurar los certificados SSL en el mismo servidor web. Si tu proveedor de alojamiento no lo permite, entonces necesitas cambiar a otro proveedor de alojamiento.

Podrías considerar alojarlo con uno de los proveedores de alojamiento recomendados por Discourse, ya que ellos se encargarán de todo esto por ti de forma sencilla.

Esperamos que esto te ayude.

Recomendado:

1 me gusta

Deberías poder lograr eso habilitando la configuración del sitio force_https de Discourse.

3 Me gusta