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

相关内容