如何配置apache以将多个tomcat应用程序作为子域提供服务

时间:2014-07-22 08:47:20

标签: java apache .htaccess tomcat subdomain

我正在尝试完成以下行为:

user1.mydomain.com -> redirected to /var/lib/tomcat6/webapps/user1/
user2.mydomain.com -> redirected to /var/lib/tomcat6/webapps/user2/

当我向Tomcat的webapps文件夹中添加新的应用程序时,我希望它们能够使用相同的子域模式自动提供。

通过以下配置,现在,当访问user2.mydomain.com:8010时,我得到了'它的工作原理!'来自apache的页面。但访问user2.mydomain.com:8010/user2的工作正常。

显然,我做错了什么,但我无法弄清楚是什么。任何帮助/建议都将受到高度赞赏。

我在tomcat前面使用apache和mod_jk连接器进行url重写。

子域配置:

* IN CNAME mydomain.com.
www.* IN CNAME mydomain.com.
中的

.htaccess

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?user1.mydomain.com
RewriteCond %{REQUEST_URI} !user1/
RewriteRule ^(.*)$ user1/$1 [L]
/ etc / apache2 / sites-enabled中的

000-default配置:

<VirtualHost *:8010>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

JkMount /* worker1
</VirtualHost>

workers.properties:

#Define 1 real worker using ajp13
worker.list=worker1
#Set properties for worker (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

1 个答案:

答案 0 :(得分:0)

另一种方法是在tomcat中进行虚拟主机映射,并将应用程序作为“ROOT”应用程序放在不同的主机下。

例如在server.xml中定义以下内容:

<Host name="user1.mydomain.com" appBase="user1"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

<Host name="user2.mydomain.com" appBase="user2"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

然后创建2个文件夹:

.../tomcat/user1/
.../tomcat/user2/

并将您的应用程序部署为“ROOT”。