Weiterleiten einer Apache-Seite an eine Anwendung per Proxy

Weiterleiten einer Apache-Seite an eine Anwendung per Proxy

Ich habe eine App auf laufen, localhost:2000während meine Site auf localhost liegt. Ich würde das Verzeichnis gerne auf /projects/projectName-> verweisen localhost:2000. Das Problem tritt jedoch auf, wenn die App Get/Post-Anfragen stellt.

Wenn beispielsweise eine GET-Anforderung an gestellt wird /run, zeigt die Anforderung die GET-URL als https://localhost/runan und gibt eine 404-Fehlermeldung zurück. Die beiden Probleme hierbei sind:

  1. Es leitet auf Port 443 weiter.
  2. der Port 2000 geht nun auf Anfrage verloren.

Update: Ich habe versucht, SSL auszuschalten, aber Port 2000 geht bei der Anforderung immer noch verloren. Idealerweise würde ich mir wünschen, dass dies mit SSL funktioniert.

Möglicherweise handelt es sich bei diesen beiden Problemen um ein und dasselbe, aber ich bin nicht sicher.

Um zu sehen, wie es funktionieren soll, http://stevenshi.me:2000sehen Sie sich die funktionierende Anwendung an. Wie Sie sehen, gehen die GET- und POST-Anfragen an die obige URL + /foo.

Hier ist meine aktuelle Apache-Konfigurationsdatei

<VirtualHost *:80>

    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

    ServerAdmin [email protected]
    ServerName stevenshi.me
    ServerAlias www.stevenshi.me
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost *:443>
            ServerAdmin [email protected]
            ServerName stevenshi.me:443
            ServerAlias www.stevenshi.me
            DocumentRoot /var/www/html

            SSLEngine on
            SSLProtocol all -SSLv2
            SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

            SSLCertificateFile /etc/apache2/ssl/ssl.crt
            SSLCertificateKeyFile /etc/apache2/ssl/private.key
            SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem

            ProxyRequests on
            ProxyPreserveHost on
            <Proxy *>
                    Order deny,allow
                    Allow from localhost
            </Proxy>

            RewriteEngine on
            RewriteRule ^/projects/CS32Brewer/(.*)$ http://localhost:2000/$1 [

            #ProxyPass /projects/CS32Brewer/ http://localhost:2000/
            ProxyPassReverse /projects/CS32Brewer/ http://localhost:2000/

            #ProxyPass /projects/Maps http://locahost:2001
            #ProxyPassReverse /projects/Maps http://localhost:2001

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
</IfModule>

Antwort1

Sie müssen mit mod_rewrite neu schreiben oder die Anwendung so konfigurieren, dass richtige URLs erstellt werden.

verwandte Informationen