ubuntuusers.de

Probleme Apache2 Reserve Proxy

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

peter5

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

Hallo Ubuntu User,

ich habe einen kleinen Server mit Ubuntu 22.04

Auf dem Server läuft Seafile mit Seafile Virtual Host. - das läuft auch alles super !

Jetzt wollte ich einen zweiten Virtual Host im Server anlegen. Kleinen Text schreiben mit PHP oder html.

das läuft nicht - ich kann machen was ich will -

Tage lang im Netz gelesen -sieht alles einfach aus - klappt nix.

ich komm nicht am Reserve Proxy vorbei !

Wer kann mir helfen ?

Moderiert von kB:

Thema aus dem Forum internetzugang in einen vermutlich besser passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5878

Wohnort: Ankh-Morpork

Wir brauchen mehr, und vor allem gezieltere Informationen.

Du erwähnst eine Reverse-Proxy und Seafile Virtual Host. Mit der Information aus der Überschrift betreibst du also Seafile mittels Apache2 und möchtest jetzt eine weitere Webseite dort hosten.

Also zeige uns doch bitte einmal deine aktuelle Konfig vom Apache2 in einem Codeblock. Dazu brauchen wir den Inhalt aller Dateien unter /etc/apache2/sites-enabled/ (Ohne sicherheitsrelevante Infos wie deine Externe Domain, bitte durch nen sinnvollen Platzhalter ersetzen, oder Passwörter.

Falls der Reverse Proxy eine separate Software ist bitte die Konfig davon auch posten und uns sagen wo und wie der läuft.

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

1. Möchte ich erklären wie ich Seafile Servers mit Virtual Host installiert habe ! (was sehr gut läuft )

das ganze läuft local mit http !

Seafile Server ist auf /opt/seafile installiert der Ordner gehört Seafile. (kompl. installation von der Seafile Seite abgearbeitet )

Konfiguarationsdatei erstellt : sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/myseafile.conf

Virtual Host angelegt: sudo nano /etc/apache2/sites-available/myseafile.conf

<VirtualHost *:80>
    ServerName seaserver
    # Use "DocumentRoot /var/www/html" for CentOS
    # Use "DocumentRoot /var/www" for Debian/Ubuntu
    DocumentRoot /var/www
    Alias /media  /opt/seafile/seafile-server-latest/seahub/media

    AllowEncodedSlashes On

    RewriteEngine On

    <Location /media>
        Require all granted
    </Location>

    #
    # seafile fileserver
    #
    ProxyPass /seafhttp http://127.0.0.1:8082
    ProxyPassReverse /seafhttp http://127.0.0.1:8082
    RewriteRule ^/seafhttp - [QSA,L]

    #
    # seahub
    #
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

Kofigurationsdatei aktivieren fertig läuft. Ip vom Server eingeben oder Server Name !!!!

Das habe ich noch im Netz gefunden - da kann man sehr schon sehen wie die anfragen vom PC oder Handy druch den Reserve Proxy gehen !!! Wir können die Passage durch die Apache2 Proxy-Reverse sicherstellen, indem wir uns die Logs ansehen, die sich befinden /var/log/apache2/other_vhosts_access.log sudo tail -f /var/log/apache2/other_vhosts_access.log

2. Jetzt habe ich zum testen einen zweiten V Host angelegt apache2/sites-available/myweb.com.conf

<VirtualHost *:80>
    ServerName myweb.com

    # Reverse Proxy Konfiguration
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>

    ProxyPass / http://127.0.0.1:3000/                   //auch ohne :3000 probiert !!
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

Da geht nix ! der R.Proxy läst nix durch (aber vorher kam immer Server nicht gefunden . Dann kam eine weisse Seite Fehler 404 oder auch 403 - dann wieder Error. Page cannot be displayed. Please contact your service provider for more details. !!!

Ich habe den V Host 10 -20 mal geändert . geht nicht !!! ☹

Bearbeitet von schwarzheit:

Forensyntax korrigiert.

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

OH da ist ein bisschen was schief gelaufen mit meiner code Eingabe

Sind beide V Host mit text rein gerutscht !! sorry

schwarzheit Team-Icon

Supporter
Avatar von schwarzheit

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9086

Statt zu antworten wäre es sinnvoller gewesen es selbst zu korrigieren.

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

das werde ich beim nächsten mal tun !

und mir vorher die Vorschau ansehen !

mfg

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

Der Reserve Proxy ist keine externe Software.

Das ist so installiert worden !

Apache installieren¶

Installieren und aktivieren Sie Apache-Module:

# Ubuntu
$ sudo a2enmod rewrite
$ sudo a2enmod proxy_http

mfg

Bearbeitet von schwarzheit:

Bitte verwende in Zukunft Codeblöcke, um die Lesbarkeit zu verbessern! Und benutze bitte den Vorschaubutton. Danke.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5878

Wohnort: Ankh-Morpork

Ja, der Apache2 hat auch ein Reverse-Proxy Modul. Aber gehen wir doch der Reihe nach vor: Was läuft denn auf dem Server auf Port 3000? Also was möchtest du erreichen?

Der folgende Code nutzt das Programm "Socket Statistics" (kurz ss) um alle offenen Ports auf dem Server anzuzeigen, mittels grep suchen wir nur nach Port 3000 (bzw. allem was den Text "3000" enthält).

1
sudo ss -tlpn | grep 3000

Wenn dort die gewünschte Software läuft einmal mit curl testen:

1
curl -v http://127.0.0.1:3000/

Gleiches für den reverse-Proxy (natürlich entsprechend auf deine URL anpassen):

1
curl -v http://myweb.com/

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

Vielen Dank für die Rückmeldung.

Stimmt das hatte ich vermutet ! Auf 3000 ist nichts

Er sucht was das nicht da ist - dem entsprechend gibt es auch keine Antwort !

In anderen Versuchen hatte ich eine Datei auf dem Server angelegt /var/www/myweb/public_html/index.html

index.html = kleiner html Text.

Wenn ich jetzt in den V Host DocumentRoot /var/www/myweb/public_html anlege !?

und :3000 raus nehme !? müsste es doch funktionieren ???

Was ist mit den Rechten ? reicht es wenn alles root gehört ???

Zu public_html habe ich gelesen sollte man mit einfügen dann könnte man auch php ect. ablegen.

mfg peter5

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5878

Wohnort: Ankh-Morpork

So, nachdem wir jetzt wissen warum das, was du versucht hast, nicht funktioniert, sind wir bei Richtig fragen (Abschnitt „Beschreibe-das-Ziel-nicht-einen-Schritt“) angekommen:

Was möchtest du also genau erreichen? Du hast ja bereits einen Seafile Server direkt auf dem Server laufen. So wie ich deine Ausführungen jetzt verstehe möchtest du eine weitere Webseite mit einfachem html ebenfalls auf dem gleichen Server verfügbar machen, ist das richtig so?

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

Ja, genau richtig !

es soll einfach nur ein Test sein ! Parallel muss vorhanden V Host einen zweiten anlegen !

zB. liegt in /var/www ein kleiner html oder php Text Hello World oder sowas !

mfg

😀

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5878

Wohnort: Ankh-Morpork

Effektiv hast du dir deine Antwort ja schon selbst gegeben, und damit auch hoffentlich den Unterschied zwischen normalen Webserver und ReverseProxy verstanden: Du braucht keinen ProxyPass, weil der ja auf einen anderen Dienst im Hintergrund weiterleitet, der ja aber nicht läuft. Bei einfachen Webseiten reicht es ein DocumentRoot mit den Dateien zu füllen.

Ich würde dir, auch wenn es nur ein Test sein soll, aber ans Herz legen das nicht auch noch unter /var/www direkt abzulegen. Besser wäre es dort Unterordner anzulegen für seafile und myweb (Auch wenn Seafile dort nichts liegen haben sollte, aber so ist klar das beide Webseiten unterschiedliche DocumentRoots nutzen).

/var/www/seafile
/var/www/myweb ← Im myweb vhost eintragen und eine index.html mit Beispielinhalt hinlegen (Ja, da fehlt der header teil, body ist auch nicht definiert, aber ein Browser rendert das trotzdem 😀):

1
2
<h1>MyWeb</h1>
<p>Hier könnte ein sinnvoller Text stehen!</p>

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

das habe ich nicht ganz verstanden !!

Wo für ist der Reserve Proxy auf dem Server ?

Nur für Seafile ? Ich dachte alle anfragen an den Server landen bei R. Proxy und werden von dort weitergeleitet !!

das macht doch kein Sinn !

mfg

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5878

Wohnort: Ankh-Morpork

peter5 schrieb:

das habe ich nicht ganz verstanden !!

Ok, dann nochmal von vorne und in (hoffentlich) Einfach:

Der Apache httpd ist zuerst einmal ein Webserver. Darauf ausgelegt HTML-Daten auszuliefern. Die einfachste und älteste Möglichkeit dazu ist einfach die Dateien im Webroot 1:1 rauszuschicken. Moderne Webseiten werden aber dynamisch von Programmen (wie z.B. dieses Forum) erstellt. Dazu muss der Webserver also intern das Programm aufrufen können um die daraus generierten HTML-Daten dann zu schicken. Damit er das konnte, wurde der httpd um Module erweitert, z.B. für die vielen Programmiersprachen die html generieren können.

Ein weiteres Modul, das allerdings keine Programmiersprache aufruft, ist der Reverse Proxy. Dieser macht nichts anderes als die Anfragen an andere Server weiterzuleiten. Warum das ganze? Weil diese Server dadurch nicht aus dem Internet erreichbar sein mussten. Außerdem konnte man verschiedene Anwendungen über den gleichen httpd verfügbar machen. Also z.B. ein example.com/info liefert eine kleine Webseite aus. example.com/blog ist die Blogsoftware und /media wird per ReverseProxy auf den Server geleitet mit den dicken Festplatten, wo die großen Daten liegen.

Du siehst: Der httpd kann (wie aber auch der nginx, ein weiterer beliebter Webserver), abhängig davon welcher Pfad (oder auch welche Domain) aufgerufen wird, unterschiedlich antworten. Welches Modul er dafür nutzt, ob durchleiten, ein Programm ausführen oder einfach Dateien ausliefern, kannst du konfigurieren.

Wo für ist der Reserve Proxy auf dem Server ?

Nur für Seafile ? Ich dachte alle anfragen an den Server landen bei R. Proxy und werden von dort weitergeleitet !!

Korrekt. Der vHost für seafile liefert unter /media die auf der Platte unter /opt/seafile/seafile-server-latest/seahub/media liegenden Daten direkt aus. Alles was unter /seafhttp angefragt wird, leitet er weiter auf http://127.0.0.1:8082.

Daher kannst du problemlos einen weiteren vHost einrichten, der die Dateien unter /var/www/myweb ausliefert. Der braucht dafür keinen Reverse Proxy, da ja kein weiteres Stück Software involviert ist.

peter5

(Themenstarter)

Anmeldungsdatum:
3. November 2023

Beiträge: 33

Wohnort: NRW

ok. Also Seafile braucht ein R. Proxy !

Technisch gesehen kommt man mit einem einfachen V Host parallel am R. Proxy vorbei (wenn die Daten kein R.Proxy brauchen ! )

Nun ist es aber so auf dem Server liegt unter /var/www/html z.b index.html (das wird die apache2 Maske sein ) und info.php .

wenn ich die IP vom Server/index.html oder info.php auf rufen will - kommt die Antwort von Seafile ( seite nicht gefunden ) ???

Da kann man nicht drauf zugreifen !

warum ?

Antworten |