我在 Jboss 前面安装了 apache,它在 80 端口上运行,jboss 监听 8080。Apache 将每个请求转发给 Jboss。因此,这是一个安静的标准场景,没有什么特别的……
我的第一个任务是在 jboss 日志中记录真实 ip。(因为我在 apache 服务器和重写引擎中有代理。)
<VirtualHost *:80>
ServerName test.com
ServerAlias test.com
CustomLog /var/log/httpd/access.log combined
RewriteEngine on
RewriteLogLevel 5
RewriteLog "/var/log/httpd/rewrite.log"
RewriteRule ^/test.txt$ /someurl/search.cgi?iHash=somehash [P]
RewriteRule ^/test2$ /just/static/url/ [P]
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://test.com:8080/
ProxyPassReverse / http://test.com:8080/
所以我用 ajp 解决了这个问题:
<Location /test2>
ProxyPass ajp://localhost:8009/just/static/url/
ProxyPassReverse ajp://localhost:8009/just/static/url/
</Location>
但现在的问题是,它只适用于静态 URL,而不适用于散列 URL。问题是 apache 会重定向 URL,但我从 Jboss 收到 HTTP 状态 404 错误。也许有人遇到过同样的问题或知道解决方案。:)
答案1
您可以将 mod_jk 与 ajp 一起使用。
首先配置 Jboss 与 mod_jk 一起工作,例如:jboss+jk
我猜连接器端口设置为 8009。您可以使用 mod_jk 和 ajp 配置 apache 以进行重定向。并使用以下命令挂载您的 url:
<IfModule mod_jk.c>
# a list of Server instances
JkWorkerProperty worker.list=JBossA
# connection properties to instance A on localhost
JkWorkerProperty worker.tomcatA.type=ajp13
JkWorkerProperty worker.tomcatA.host=localhost
JkWorkerProperty worker.tomcatA.port=8009
# some other configuration
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# forwarding URL prefixes to Server instances
JkMount /APPUrl/* JbossA
</IfModule>
和workers.properties具有:
worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true
worker.list=jk-manager
worker.jk-manager.type=status
worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true
worker.list=jk-manager
worker.jk-manager.type=status
worker.balancer.error_escalation_time=0
worker.balancer.max_reply_timeouts=10
worker.balancer.balance_workers=node1
worker.node1.reference=worker.template
worker.node1.host=localhost
worker.node1.port=8109
worker.node1.activation=A
worker.balancer.balance_workers=node2
worker.node2.reference=worker.template
worker.node2.host=localhost
worker.node2.port=8209
worker.node2.activation=A
worker.template.type=ajp13
worker.template.socket_connect_timeout=5000
worker.template.socket_keepalive=true
worker.template.ping_mode=A
worker.template.ping_timeout=10000
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.reply_timeout=300000
worker.template.recovery_options=3
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1