Hacer que el sitio Apache alojado en una computadora local sea accesible desde el exterior

Hacer que el sitio Apache alojado en una computadora local sea accesible desde el exterior

Tengo un servidor Apache2 en funcionamiento que aloja un sitio Moodle en LAN al que se puede acceder a través de http://192.x.x.x/moodle. También tengo un servidor Linux entre Internet y la LAN con una dirección IP activa 124.x.x.x. Quiero que el sitio Moodle sea accesible desde Internet. ¿Es posible?

El servidor apache2 local tiene una configuración funcional para servir moodle.domain.com. El servidor Linux en vivo también tiene un alojamiento de servidor Apache2 domain.com. Ambos ejecutan Debian Linux

Intenté redirigir moodle.domain.comdesde el archivo 192.x.x.xdel servidor Linux en vivo, pero aún así, es lo que obtengo cuando accedo desde el exterior./etc/hostsdomain.commoodle.domain.com

Cuando accedo desde afuera, primero configuro el archivo host en una computadora portátil con Windows para redirigir moodle.domain.coma la dirección IP activa del servidor Linux.

¿Que me estoy perdiendo aqui?

Respuesta1

Lo hice funcionar implementando el proxy inverso Apache en el servidor Apache Linux en vivo.

Para aquellos que buscan la misma solución, aquí hay un fragmento de mi /etc/apache2/sites-enabled/000-default.conf:

<VirtualHost *:80>
        ServerName moodle.domain.com
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://10.5.1.100:8080/
        ProxyPassReverse / http://10.5.1.100:8080/
</VirtualHost>

El servidor Apache local que aloja el sitio Moodle real debería estar escuchando en el puerto 8080:

<VirtualHost *:8080>
    ServerAdmin webmaster@local
    DocumentRoot /srv/www/moodle
    ServerName moodle.domain.com
    ServerAlias moodle.domain.com
    <Directory /srv/www/moodle>
           #Allowoverride all    ###Uncomment if required
    </Directory>
</VirtualHost>

Otra configuración específica de Moodle que necesitaba modificar es el archivo de configuración de Moodle /srv/www/moodle/config.php:

$CFG->wwwroot = 'http://moodle.dominio.com';

Moodle lo configuró inicialmente $CFG->wwwroot = 'http://10.5.1.100/moodle';durante la instalación. Si no tiene instalación de Moodle, ignore esta parte

Respuesta2

Antes de comenzar, quiero asegurarme de que comprenda que no es la opción más segura hacerlo de esta manera. Especialmente abriendo los puertos del enrutador, así que asegúrese de comprender el firewall.

Como tiene una IP dinámica (supongo), no puede simplemente vincularla a su dominio. Esto se debe a que su IP terminará cambiando cada dos horas.

Esta respuesta se basa en las opciones de enrutador más comunes disponibles.

  1. Debe encontrar su servidor Apache en las conexiones del enrutador y activar el reenvío de puertos (80) o, si comprende lo que está haciendo y tiene un firewall adecuado inicializado, puede simplemente abrir todos los puertos del enrutador (le recomiendo no hacer esto). a menos que tengas un firewall)
  2. Utilice un servicio DNS gratuito como Dyn DNS (los enrutadores más recientes lo admiten de fábrica, simplemente verifique la configuración y configure una cuenta).
  3. Crea un subdominio DNS gratuito.
  4. Cree una regla DNS (CNAME) desde su dominio principal. y apúntelo a su subdominio creado por Dyndns. Por ejemplo moodle.example.com -> trex-moodle.exampledyndns.com.
  5. Configure su apache y agregue su subdominio dyndns.

Usar un dns gratuito en su enrutador es la mejor opción, ya que su enrutador rota la IP cada dos horas, si está utilizando dicho servicio, su dominio dyn dns siempre apuntará a la dirección IP de su hogar.

Editar

Con respecto al primer comentario, necesitará un proxy nginx ejecutándose en su servidor Linux principal. El nginx se puede utilizar para alojar el sitio web domain.comy moodle.domain.com, que está alojado en diferentes servidores de la misma red.

Asegúrese de poder acceder al sitio web de Moodle desde su servidor Linux. (Utilice ping IP)

Ahora en tu nginx necesitarás tener la siguiente configuración:

server {
    listen       80;
    server_name domain.com;

        root /your/domain.com/path/goes/here ;
}

server {
    listen       80;
    server_name  moodle.trex.com;

    location / {
        proxy_pass http://192.X.X.X:80; #Your apache2 server local IP address
    }
}

Para que esto funcione, tanto los servidores Linux como su servidor Apache2 deben estar bajo la misma red 192.XXX.

información relacionada