2008-12-17 97 views
0

我在4个端口上配置了apache(使用虚拟主机作为一些端口使用HTTPS),目的是将发送请求重定向到运行在其他某台机器上的TOMCAT实例中的不同servlet。这些调用来自httpclient(java客户端)。当我运行客户端时,它会抛出错误301错误:永久移动。需要提示/技巧/如何解决这个问题的帮助。Apache Web服务器重定向发布请求

如果有人能给我一个例子,这将是很好。我的虚拟主机(用重方向) 看起来像这样

<VirtualHost _default_:3334> 
    RewriteEngine On 
    RewriteRule ^/$ https://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service 
<\VirtualHost> 

我现在能得到国防部代理与国防部重写工作,现在我不明白的302错误,而是因为它总是碰巧一个新手有这个另一个问题。

HTTP POST请求不起作用。当我发布帖子请求时,代理在继续寻找index.htm时失败。

我的httpd.conf片段

<VirtualHost *:3331> 
    ServerName localhost:3331 
    ProxyPass/http://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service 
    ProxyPassReverse/http://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service 
    RewriteEngine on 
    RewriteRule ^/$ http://localhost:3331/ 
</VirtualHost> 
+0

如果有人能给我一个例子,这将是很好的。我的虚拟主机(用重方向)看起来像这样 <虚拟主机_default_:3334> RewriteEngine叙述在 重写规则^/$ https://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service kittugadu 2008-12-17 15:54:42

回答

0

实现了这个使用JK和国防部重写。问题出在双向SSL上,我将端口配置为与443(SSL)端口一起运行。

注:如果打算重写URL的虚拟主机,然后JK安装有被重新加载为每个虚拟主机。

我的URL重写看起来像
的RewriteCond%这个

RewriteEngine叙述{SERVER_PORT} 4342
重写规则^/$ /郎/ Englangservices/Alapbhet_service [L,PT]

谢谢大家一个他们的投入。

2

A 301周的声音一样,如果你真的想重定向,但也许你真的想代理的请求,使客户端不知道重定向的适当的反应?在这种情况下,请使用mod_proxy作为反向代理。

0

你的httpclient在java中需要正确处理301个答案。如果没有,它就会坏掉。如果您不想或不能,那么Paul使用mod_rewrite/mod_proxy来“透明地”重定向是一种好方法。请参阅here

3

另外一个选项是mod _ jk。 (抱歉的空格,否则格式化会搞砸)

两者都是apache扩展,它允许apache使用请求,将其透明地转发给tomcat,等待响应并将结果发送回去。

恕我直言mod_jk的有几个优点

  • 的Tomcat自动地获取服务的主机名,协议和端口(与mod_proxy的必须配置一个事实,即它是在连接器代理,所看到的选项proxyName and proxyPort
  • 的mod_jk提供负载平衡 - 你应该需要这个
  • apache向tomcat表达了一个为这个任务设计的协议(ajp13)。通过mod_proxy他们谈论http,它有一个稍高的开销(披露:我从来没有测量过它自己,只是parrotting它)

你最终使用的是完全你的选择 - 它不是这两个选项之间的差别很大。 (有人纠正我,如果它是)

配置如下(未经测试的伪代码。阅读文档,请理解你做什么...)

# somewhere in httpd.conf, above the virtual hosts 
JkWorkersFile /etc/apache2/workers.properties 
JkLogFile  /var/log/apache/mod_jk.log 
JkLogLevel error 

# your existing part with virtual hosts 
<VirtualHost ...> 
    .... 
    JkMount /Lang/* tomcat1 
    JkMount /Lang tomcat1 # if you need the directory itself also to be forwarded 
    .... 
</VirtualHost> 

# the workers.properties file described above 
# 'tomcat1' is the reference used above as argument to JkMount 
workers.list=tomcat1 
worker.tomcat1.port=8009 
worker.tomcat1.host=localhost 
worker.tomcat1.type=ajp13 
worker.tomcat1.lbfactor=1 
+0

感谢您注意mod_jk的优势 – cherouvim 2009-07-04 09:58:55

相关问题