3

我对 Apache HTTP 和系统管理员很陌生,所以我有这个问题我有一个域(www.doamin.com),其中一个 Apache 监听端口 80,我在同一个域上也有一个 Apache Tomcat配置为 8080 端口。

有没有办法配置一个子域(即tomcat.domain.com),所以它会重定向到我的tomcat特定应用程序,所以用户可以通过app1.domain.com和app2.domain.com访问应用程序(它将被提供由Tomcat)?

我看到很多提到

mod_jk

mod_proxy

但所有帖子都假设事先了解 Apache。有人可以带我走吗?

非常感谢,-PK。

4

2 回答 2

10

mod_jk 已过时。建议使用 mod_proxy(mod_proxy_http 或 mod_proxy_ajp)将转发请求到您的 apache 服务器连接到 tomcat。

  1. 在你的 apache 配置中定义一个虚拟主机
  2. 创建一个代理指令,将您的请求转发到 tomcat

也许这个SO question会给你一些提示。

您可以定义两个具有指定应用程序代理定义的虚拟主机(app1.domain.tld 和 app2.domain.tld)。app1 的示例:

<VirtualHost *:80>
    ServerName app1.domain.tld
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8080/app1
    ProxyPassReverse / http://localhost:8080/app1
</VirtualHost> 
于 2012-04-18T08:44:39.460 回答
5

虽然 Magomi 几乎是对的,

提出一个确切的方法来做到这一点。

  1. 将您的子域添加到 DNS 服务器

  2. 将 *mod_proxy* 集成到httpf.conf 中

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
  1. 定义两个虚拟主机如下

    名称虚拟主机 *:80

    <VirtualHost *:80>
        ServerName application.domain.com
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
        ProxyPass / http://www.domain.com:8080/application/
        ProxyPassReverse / http://www.domain.com:8080/application/
    </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot C:\<pathToApache>\www
        ServerName www.domain.com
    </VirtualHost>
    

这会将您的站点 (www.domain.com) 定向到您的 Apache HTTP 服务器,并将所有对应用程序的调用重定向到 Tomcat。

希望这可以帮助,

-PK

于 2012-04-18T13:32:20.050 回答