虚拟主机与Tomcat + Mod JK



我的 cent os 服务器上有一个 tomcat(运行在 8080 上(应用程序,我可以使用以下网址访问它:

SERVER_IP:8080/myapp

我打开了我的管理面板

SERVER_IP:8080/myapp/admin

我有一个在端口 80 上运行的 apache 服务器。

我有两个域:

www.myapp.com
admin.myapp.com

我已经设法配置了tomcat,mod_jk和apache服务器,以便 admin.myapp.com URL打开tomcat主页(SERVER_IP:8080(。

但我想要的是制作 admin.myapp.com url 来打开 SERVER_IP:8080/myapp/admin,www.myapp.com 打开 SERVER_IP:8080/myapp。

我需要让 apache 知道请求何时到达 admin.myapp.com,它应该知道将请求重定向到 SERVER_IP:8080/myapp/admin。 显然缺少一些东西。

这是我的配置:

httpd.conf (admin.myapp.com.conf 实际上是因为它是由 Plesk Panel 创建的,但我认为它是无关紧要的(

<VirtualHost SERVER_IP:80 >
    ServerName "admin.myapp.com:80"
    ServerAlias "www.admin.myapp.com"
    ServerAlias "ipv4.admin.myapp.co"
    ServerAdmin "cuneyty@mycompany.com"
    UseCanonicalName Off
    JkMount / ajp13
    JkMount /* ajp13
    ....
</VirtualHost>

mod_jk.conf

# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
# Update this path to match your conf directory location
JkWorkersFile /usr/local/tomcat7/conf/workers.properties
# Where to put jk logs
# Update this path to match your logs directory location
JkLogFile /usr/local/tomcat7/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

工人属性

# Define 1 real worker named ajp13
worker.list=ajp13
# Set properties for worker named ajp13 to use ajp13 protocol,
# and run on port 8009
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.lbfactor=50
worker.ajp13.cachesize=10
worker.ajp13.cache_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.socket_timeout=300

提前谢谢。

实现

此目的的最简单方法是使用mod_proxy
在 httpd.conf 中加载mod_proxy模块

<VirtualHost SERVER_IP:80>
     ServerName admin.myapp.com
     ServerAlias www.myapp.com
     ServerAlias www.admin.myapp.com
     ServerAlias ipv4.admin.myapp.co
     ServerAdmin cuneyty@mycompany.com
     # Any additional configuration/customization.
     RewriteEngine on
     RewriteCond %{HTTP_HOST} ^admin.myapp.com$ [NC]
     RewriteRule ^(.*)$ http://SERVER_IP:8080/myapp/admin/$1 [R=301,L]
     ProxyRequests Off    
     ProxyPass / ajp://SERVER_IP:8009/
     ProxyPass /myapp/ ajp://SERVER_IP:8009/myapp

</VirtualHost>

您还可以通过启用mod_proxy_balancer来实现负载平衡。它是用于负载平衡的mod_proxy的扩展。

在此处
查看mod_proxymod_jk的优缺点

祝你好运!

毕竟,我用mod_proxy而不是另一个答案中提到的斜杠mod_jk提出了这个解决方案。但是对我有用的如下:

ProxyPass / http://SERVER_IP:8080/ 
ProxyPass /myapp/ http://SERVER_IP:8080/myapp

然后我为饼干添加了以下行:

ProxyPassReverseCookiePath /myapp /

最新更新