【问题标题】:How to configure apache to serve multiple tomcat apps as subdomains如何配置 apache 以将多个 tomcat 应用程序作为子域提供服务
【发布时间】:2014-07-22 08:47:19
【问题描述】:

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

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 在 /var/www:

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-默认配置:

<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

【问题讨论】:

    标签: java apache .htaccess tomcat subdomain


    【解决方案1】:

    另一种方法是在 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”。

    【讨论】:

    • 但这需要在每次部署新应用程序时重新启动服务器,对吗?我希望能够在运行时根据需要添加任意数量的应用程序,而无需重新启动服务器。
    • 请注意,每个部署的应用程序都会占用内存,因此您的扩展在任何方面都非常有限。如果您需要扩展,您应该设计您的 tomcat 应用程序,使单个实例可以自己处理“userX/”路径或“userX.mydomoain.com”主机。
    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多