將 Apache 頁面代理到應用程式

將 Apache 頁面代理到應用程式

我有一個應用程式正在運行,localhost:2000而我的網站位於本地主機上。我想指出目錄/projects/projectName-> localhost:2000。然而,當應用程式發出 get/post 請求時,問題就出現了。

例如,如果在 發出 GET 請求/run,則該請求將 GET URL 顯示為https://localhost/run並傳回 404。

  1. 它重定向到連接埠 443;和
  2. 連接埠 2000 現在根據請求遺失。

更新:我嘗試關閉 SSL,但連接埠 2000 仍然根據請求丟失。理想情況下,我希望它能夠與 SSL 一起使用。

這兩個問題可能是同一個問題,但我不確定。

要了解它應該如何運作,http://stevenshi.me:2000就是工作應用程式。正如你所看到的,GET 和 POST 請求都會轉到上面的 url + /foo

這是我目前的 apache conf 文件

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

相關內容