Auf einem lokalen Computer gehostete Apache-Site von außen zugänglich machen

Auf einem lokalen Computer gehostete Apache-Site von außen zugänglich machen

Ich habe einen funktionierenden Apache2-Server, der eine Moodle-Site im LAN hostet, auf die über zugegriffen werden kann http://192.x.x.x/moodle. Außerdem habe ich zwischen dem Internet und dem LAN einen Linux-Server mit einer aktiven IP-Adresse 124.x.x.x. Ich möchte die Moodle-Site vom Internet aus zugänglich machen. Ist das möglich?

Der lokale Apache2-Server verfügt über eine funktionierende Konfiguration zum Bereitstellen moodle.domain.com. Der Live-Linux-Server verfügt auch über einen Apache2-Server zum Hosten domain.com. Beide laufen unter Debian Linux

Ich habe versucht, von der Datei des Live-Linux-Servers aus eine Weiterleitung moodle.domain.comdurchzuführen , aber das ist immer noch das, was ich bekomme, wenn ich von außen darauf zugreife.192.x.x.x/etc/hostsdomain.commoodle.domain.com

Wenn ich von außerhalb zugreife, konfiguriere ich zuerst die Hostdatei auf einem Windows-Laptop so, dass sie moodle.domain.comauf die Live-IP-Adresse des Linux-Servers umleitet.

Was übersehe ich hier?

Antwort1

Ich habe es zum Laufen gebracht, indem ich den Apache-Reverse-Proxy im Live-Linux-Apache-Server implementiert habe.

Für diejenigen, die nach der gleichen Lösung suchen, hier ein Ausschnitt aus meinem /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>

Der lokale Apache-Server, auf dem die eigentliche Moodle-Site gehostet wird, sollte auf Port lauschen 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>

Eine weitere Moodle-spezifische Einstellung, die ich optimieren musste, ist die Moodle-Konfigurationsdatei /srv/www/moodle/config.php:

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

Moodle hat es bei der Installation zunächst so eingestellt $CFG->wwwroot = 'http://10.5.1.100/moodle';. Wenn Sie keine Moodle-Installation haben, ignorieren Sie diesen Teil

Antwort2

Bevor wir beginnen, möchte ich sicherstellen, dass Sie verstehen, dass dies nicht die sicherste Option ist. Insbesondere durch das Öffnen von Router-Ports. Stellen Sie daher sicher, dass Sie sich mit Firewalls auskennen.

Da Sie eine dynamische IP haben (nehme ich an), können Sie sie nicht einfach an Ihre Domain binden. Denn Ihre IP ändert sich alle paar Stunden.

Diese Antwort basiert auf den gängigsten verfügbaren Routeroptionen.

  1. Sie müssen Ihren Apache-Server in den Router-Verbindungen finden und die Port-Weiterleitung (80) aktivieren. Wenn Sie wissen, was Sie tun und eine geeignete Firewall initialisiert haben, können Sie einfach alle Router-Ports öffnen (ich rate Ihnen dringend davon ab, dies zu tun, es sei denn, Sie haben eine Firewall).
  2. Verwenden Sie einen kostenlosen DNS-Dienst wie Dyn DNS (die meisten aktuellen Router unterstützen dies standardmäßig, überprüfen Sie einfach die Einstellungen und richten Sie ein Konto ein).
  3. Erstellen Sie eine kostenlose DNS-Subdomäne.
  4. Erstellen Sie eine DNS-Regel (CNAME) für Ihre Hauptdomäne und richten Sie sie auf die von Ihnen per Dyndns erstellte Subdomäne aus. Beispiel: moodle.example.com -> trex-moodle.exampledyndns.com.
  5. Konfigurieren Sie Ihren Apache und fügen Sie Ihre Dyndns-Subdomäne hinzu.

Die beste Option ist die Verwendung eines kostenlosen DNS in Ihrem Router, da Ihr Router die IP alle paar Stunden wechselt. Wenn Sie einen solchen Dienst verwenden, verweist Ihre Dyn-DNS-Domäne immer auf Ihre private IP-Adresse.

Bearbeiten

In Bezug auf den ersten Kommentar benötigen Sie einen Nginx-Proxy, der auf Ihrem Haupt-Linux-Server ausgeführt wird. Nginx kann zum Hosten der Website domain.comund von moodle.domain.com verwendet werden, das auf einem anderen Server im selben Netzwerk gehostet wird.

Stellen Sie sicher, dass Sie von Ihrem Linux-Server aus auf die Moodle-Website zugreifen können. (Verwenden Sie Ping IP)

Jetzt benötigen Sie in Ihrem Nginx die folgende Konfiguration:

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
    }
}

Damit dies funktioniert, müssen sich beide Linux-Server und Ihr Apache2-Server im selben 192.XXX-Netzwerk befinden.

verwandte Informationen