通过 ajp 的代理传递不适用于散列 URL

通过 ajp 的代理传递不适用于散列 URL

我在 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

相关内容