ProxyPass: Leitet die Verzeichnis-URL an einen nicht standardmäßigen Port um

13

Ich habe Google durchsucht und konnte bisher keine Antwort finden. Ich verwende einen Server unter Ubuntu und habe Programme installiert, die verschiedene nicht standardmäßige Ports verwenden. Jeder Port verwendet einen anderen, in meinem Fall 9090, 9091, 9092, 9093 und 9094. Ich habe einen Apache-Server eingerichtet und einen Domain-Namen, der jetzt meinen Server erreichen kann, anstatt meine IP-Adresse eingeben zu müssen. Ich suche nach einer Möglichkeit, Verzeichnisse zu erstellen, die auf die verschiedenen Ports verweisen, die ich aufgelistet habe. Ich möchte so etwas wie:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

Einige der Ports sind über SSL, andere nicht. Ich habe sie nur der Einfachheit halber in die richtige Reihenfolge gebracht (9090-9094). Ich möchte, dass / app1 auf SSL-Port 9090 zeigt, / app2 auf SSL-Port 9091 zeigt und / app3 auf Nicht-SSL-Port 9092 zeigt. Gibt es eine einfache Möglichkeit, dies zu tun? Ich habe versucht, ProxyPass und dergleichen basierend auf anderen Posts hinzuzufügen, aber nichts hat funktioniert. Muss ich eine neue Site hinzufügen?

Wenn es sich dabei um das Bearbeiten von Dateien handelt, was ich erwarte, wäre es sehr dankbar, wenn Sie den Standardspeicherort der Datei auflisten und angeben könnten, wo Dinge hinzugefügt werden sollen. Ich sah immer wieder Posts mit der Aufforderung, ProxyPass hinzuzufügen, und nahm daher an, dass es in VirtualHost funktioniert, war mir aber nicht ganz sicher. Grundsätzlich weiß ich sehr wenig über die Einrichtung von Webservern und muss als solche behandelt werden.

Ich entschuldige mich für falsche Tags und freue mich über die Zeit, die Sie zum Lesen des Beitrags benötigt haben, sowie über jede Hilfe, die Sie leisten können.

BEARBEITEN: Zur Verdeutlichung sind die Anwendungen bereits über https://www.mydomain.com:9090usw. zugänglich . Ich möchte nur eine Möglichkeit verwenden https://www.mydomain.com/appName, um zu derselben Position / Seite zu gelangen, die von diesen Anwendungen veröffentlicht wurde.

BEARBEITEN 2: Aus / etc / apache2 / sites-available / default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>
Serneum
quelle
Können Sie die Ausgabe der Konfigurationsanweisungen veröffentlichen, mit denen Sie dies eingerichtet haben? Wenn sie sich in einem vhost befinden, können Sie den gesamten vhost posten?
Marcos Velazquez
Was einrichten? Die Häfen? Die Ports werden alle über die Benutzeroberfläche der jeweiligen Programme eingerichtet. Ich suche nach einer Möglichkeit, die Ports beim Zugriff auf die einzelnen Anwendungen auf meinem Server nicht eingeben zu müssen. Ich kann die Anwendungen durchsuchen, um zu sehen, was ich finden kann, aber die Ports werden normalerweise nur in einer config.ini-Datei gespeichert
Serneum
Nein, nicht das. Ich meinte, wenn Sie ProxyPass und die anderen Dinge verwenden, müssen Sie sie in einem vhost platziert haben, richtig? Wenn ja, können Sie den gesamten vhost-Inhalt bereitstellen, wenn dies möglich ist? ie <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
Marcos Velazquez
Ich hatte die meisten meiner Änderungen rückgängig gemacht, um eine saubere Tafel zu bekommen, bevor ich um Hilfe bat. Ich habe gerade die / etc / apache2 / sites-available / default-Datei hinzugefügt, die ich habe, und ich habe das Proxy-Zeug am Ende hinzugefügt, basierend auf dem, was ich bei verschiedenen anderen Sites / Suchen gesehen habe
Serneum

Antworten:

13

Stellen Sie sicher, dass die folgenden Apache-Module installiert und geladen sind:

mod_proxy
mod_proxy_http
mod_ssl

Sie können dies überprüfen, indem Sie den folgenden Befehl als root ausführen (vorausgesetzt, httpd befindet sich in Ihrem $ PATH).

httpd -t -D DUMP_MODULES

Versuchen Sie anschließend, Ihre Konfiguration wie folgt zu ändern:

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

Der Proxy sollte jetzt funktionieren, wenn Sie mydomain.com besuchen http://localhost/app1oder http://mydomain.com/app1davon ausgehen, dass er auf localhost verweist.

Marcos Velazquez
quelle
Das gleiche Problem wie zuvor, ich habe keine Ahnung, wie man mod_proxy installiert und a2enmod mod_proxy sagt, dass mod_proxy nicht existiert. Ich werde weiter suchen, wie ich diese 3 Mods bekomme, damit ich die Dinge zum Laufen bringen kann. Davon abgesehen habe ich Proxy, Proxy_http und SSL im Moment ausgeführt. Wenn das das ist, was ich brauche, dann scheint diese Lösung immer noch nicht zu funktionieren. Ich erhalte eine verbotene Nachricht, von der ich
annehme
Anmerkung: mydomain.com verweist auf meine externe IP und nicht auf localhost. Ich habe versucht, den localhost: 9090 auf meine ip: 9090 zu ändern, aber ohne Erfolg. Ist das „Zulassen von“ und dem „ localhost “ neben dem Proxypass relativ zu dem Server oder in Bezug auf das, was zuzugreifen versucht es?
Serneum
Habe es funktioniert, indem ich Allow from all vorübergehend mache. Nachteil ist, dass kein CSS usw. auf der Seite erscheint, aber das ist ein ganz anderes Thema, das ich mir selbst ansehen werde. Vielen Dank.
Serneum
Zu welcher Konfigurationsdatei muss ich hinzufügen ProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090?
7.
Seitenassets, die nicht angezeigt werden, sind möglicherweise kein separates Problem. Die ProxyPass-Direktive gilt hier nur für Dokument (App1). Fügen Sie dem Proxy-App1-Verzeichnis mit seinem gesamten Inhalt abschließende Schrägstriche hinzu. ProxyPass /app1/ https://localhost:9090/und dasselbe für ProxyPassReverse, falls verwendet. Und zweitens, fügen Sie die RewriteRule-Umleitung hinzu: RewriteRule ^/app1$ /app1/ [R]as / app1 würde dann nicht weitergeleitet.
Papo