Apache ページをアプリケーションにプロキシする

Apache ページをアプリケーションにプロキシする

私のサイトは localhost 上にあるのに、アプリは で実行されています。ディレクトリを->localhost:2000に指定したいのですが、アプリが get/post リクエストを行うときに問題が発生します。/projects/projectNamelocalhost:2000

たとえば、 で GET リクエストが行われた場合/run、リクエストでは GET URL が として表示されhttps://localhost/run、 404 が返されます。ここでの問題は次の 2 つです。

  1. ポート443にリダイレクトします。
  2. ポート 2000 は要求に応じて失われます。

更新: SSL をオフにしてみましたが、ポート 2000 はリクエスト時に失われます。理想的には、SSL でこれが機能するようにしたいと思います。

これら 2 つの問題は同じものである可能性がありますが、確信はありません。

どのように動作するかを確認するには、http://stevenshi.me:2000動作するアプリケーションを参照してください。ご覧のとおり、GET および POST リクエストは上記の URL + に送信されます/foo

これが私の現在のApacheの設定ファイルです

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

答え1

mod_rewrite を使用して書き換えるか、適切な URL を作成するようにアプリケーションを構成する必要があります。

関連情報