¿Pueden dos sitios web que se han creado utilizando diferentes lenguajes de programación integrados en uno bajo un solo nombre de dominio?

Es posible y definitivamente no es tan difícil como podría pensar inicialmente. Para un ejemplo simple, tomaré una aplicación Django y una aplicación NodeJs con proxy a través de Nginx, pero esto se puede aplicar a cualquier combinación de aplicaciones / Servidor HTTP que desee. [Lo ideal sería una demarcación en las URL que maneja cada una de sus aplicaciones]

Lo primero que debe comprender es que un sitio web creado es solo otra aplicación que se ejecuta en su sistema, lo que expone un puerto en particular para que los clientes externos se conecten a él y recuperen el contenido que desean usar [que puede ser para renderizar páginas web o API simples] . Cuando abre una página web, lo que realmente está haciendo es conectarse a esa máquina en particular a través de un puerto particular [80 para HTTP y 443 para HTTPS] y recuperar el contenido que debe mostrarse.

  1. Django: puede ejecutar una aplicación Django con el comando “python manage.py runserver”. De forma predeterminada, esto ejecutará la aplicación web Django en el puerto 8000. [En producción, debería usar gunicorn / uwsgi para implementar]
  2. NodeJs: suponiendo que su aplicación Node esté en un archivo llamado app.js, puede ejecutarla usando “nodejs app.js”. Esto ejecutará la aplicación en el puerto especificado en su aplicación como el oyente. [Típicamente el puerto 3000, asegúrese de que esto no entre en conflicto con la otra aplicación. Nuevamente use algo como PM2 para implementar en producción]
  3. Archivos estáticos: idealmente, debería servir sus archivos estáticos no a través de sus aplicaciones web. Esto se puede colocar en un directorio y servir directamente sin tocar sus servidores web.

En este punto, tiene dos aplicaciones web que se ejecutan en su máquina en diferentes puertos, pero todavía no están expuestas al mundo exterior [Suponiendo que tenga las reglas de firewall adecuadas]. Aquí es donde aparece un servidor proxy HTTP como Nginx. Nginx escucha en los puertos 80 y 443 [Los puertos son configurables, pero solo debe cambiar si sabe lo que está haciendo] y envía las solicitudes a la aplicación web correcta en función de la URL de solicitud.

Un ejemplo de archivo de configuración nginx se vería así

servidor {
escuchar 80 default_server;
nombre_servidor ;
access_log ;
root ;

location / {
incluir proxy_params;
proxy_pass http: // localhost: 8000;
}
location / {
incluir proxy_params;
proxy_pass http: // localhost: 8000;
}
ubicación / {
incluir proxy_params;
proxy_pass http: // localhost: 3000;
}
# Reenviar todas las solicitudes estáticas para acceder directamente desde la carpeta estática
ubicación / estática / {
}
}

Pero hay algunas cosas en las que debes pensar al hacer esto,

  1. Reenvío y análisis de encabezado adecuados: puede pensar en leer más sobre esto aquí, Comprender el proxy HTTP de Nginx, el equilibrio de carga, el almacenamiento en búfer y el almacenamiento en caché
  2. Sesiones en las aplicaciones web: dado que estas son dos aplicaciones web, si un usuario ha iniciado sesión en una de ellas, la otra aplicación web no respeta la autenticación. Pero esto se puede solucionar. Dado que ambos obtendrán la misma información de cookies, puede usarla para verificar el inicio de sesión del usuario si tiene una manera de compartir datos de sesión entre sus aplicaciones.

Es posible que haya un par de advertencias más que deba resolver, pero este sería el punto de partida.

Seguro.

Instálelos en diferentes directorios (en www ot htdocs, o lo que su estructura de directorio requiera). Luego puede hacer que se llamen entre sí (redirija al directorio en el que se encuentra el otro programa) o, como en mi caso actual, donde se accede a los dos “sitios” utilizando diferentes direcciones (myfirstsite.com y mysecondsite.com, solo como ejemplos), solo mire el Host en los encabezados para decidir a qué “sitio” se está accediendo y redirija a ese. A http://somesite.com no le importa en qué idioma está escrito el archivo que se carga, siempre que el servidor pueda manejar ese idioma. Correrá. (Los dos están escritos en PHP, pero eso es solo porque estoy muy familiarizado con PHP y lo prefiero, pero uno de ellos podría haber sido escrito en Node.js o cualquier otra cosa).

More Interesting

¿Cómo puedo generar backlinks a través de sitios web de publicación de Fourm?

¿Cómo puedo comenzar a aprender a escribir scripts de web scraping?

¿Cuáles son algunas de las mejores empresas de diseño web en Delhi para un desarrollo completo de sitios web que obviamente incluye un increíble diseño web, SEO y SMO, piratería y todos los demás servicios necesarios?

Si esta entrevista de Trump es objetiva, ¿no debería someterse a pruebas de competencia cognitiva? http://www.motherjones.com/kevin-drum/2017/08/505709/

¿Cuál es el software que debe tener un blogger o el propietario de un sitio?

Hay toneladas de creadores de sitios web (Wix, Strikingly, WordPress, ¡y la lista continúa!). ¿Cuál de ellos sé que es el mejor para mi startup?

Quiero construir un sitio web, ¿puedo saber cuáles son los requisitos y especificaciones para eso?

Cómo acceder a un sitio web ExtraTorrent en India

¿Cuánto puedo ganar con los anuncios de hélice en el primer mes con mi primer sitio web?

¿Cuánto debo cobrarle a mi cliente por un sitio web diseñado a medida, incluidos los códigos de fondo?

¿Qué se requiere (técnica, legal, prácticamente) para crear y publicar una aplicación que interactúa con un sitio web que no es de mi propiedad ni administro?

¿Cuáles son las buenas listas de verificación para el mantenimiento web?

Cómo arreglar mi sitio web para que cuando las personas creen sus cuentas, el sitio web guarde la información del usuario y las actualizaciones

¿Puedo codificar un sitio web en un teléfono móvil?

¿Qué sitios puedo promocionar para mi evento? Mi evento es https://www.facebook.com/events/129499337664774/.