0

这个问题之前已经被问过,并且,在简历中我想配置这个场景:

1 - 我有一台带有许多应用程序的 Jetty 7 服务器,例如:app1、app2、app3 等。

2 - 我有一个主域,每个 Jetty 应用程序有一个子域,例如:app1.example.com、app2.example.com、app3.example.com 等。

3 - 我正在尝试使用 Apache 2.2.22 mod_proxy 在 Apache 管理的域中屏蔽这些 Jetty 应用程序。这是我对一个应用程序的功能配置:

<VirtualHost *:80>
        ServerName example.com
        ServerAlias app1.example.com
        ProxyRequests Off
        ProxyPreserveHost On

        <Proxy *:80>
          Order deny,allow
          Allow from all
        </Proxy>
        ProxyPass /app1 http://localhost:8080/app1
</VirtualHost>

此配置有效,但是,它不会删除上下文名称,URI 是:

http://app1.example.com/app1/?args=or/pages/etc ...

有办法删除这个上下文名称,留下一个完全透明的 URI 吗?例如:

http://app1.example.com/?args=or/pages/etc ..

Web 上的所有示例都在 URIS 上使用此上下文名称:/

附加信息:

  • 带有 Ubuntu 12.04 的虚拟机;
  • Jetty 7 未经修改;
  • 启用了 mod_proxy 和 mod_rewrite 的 Apache 2.2.22(并且默认启用了一些基础模块);
  • Digital Ocean 虚拟机管理器中正确且有效的 CNAME 和域名;

提前致谢。

4

1 回答 1

0

我找到了一个解决方案:

1 - 为 apache2 mod-proxy-html 安装这个特定的库:

sudo apt-get install libapache2-lib-proxy-html

2 - 启用这个新模块:

sudo a2enmod proxy_html

3 - 在以下位置配置您的应用程序描述符:

sudo vim /etc/apache2/sites-enabled/app1 

包含以下内容:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName app1.example.com
        ProxyRequests Off
        ProxyPreserveHost On

        <Proxy *:80>
          Order deny,allow
          Allow from all
        </Proxy>
        ProxyPass / http://localhost:8080/app1
        ProxyPassReverse / http://localhost:8080/app1

        ProxyHTMLURLMap / /app1/

        <Location />
                Order allow,deny
                Allow from all
        </Location>
</VirtualHost>

4 - 重新启动 apache2 服务:

sudo service apache2 restart

快乐,透明的请求:

http://app1.example.com/some/beautiful/page

于 2013-10-29T11:21:20.783 回答