我有一个使用mod_proxy_ajp配置apache和tomcat的应用程序 我们在httpd.conf中配置了它,如下所示:
# This is to redirect any request which is coming with hostname to Login.jsp
RewriteRule ^/$ /jsp/Login.jsp [R]
#include httpd-proxy.conf
<IfModule mod_proxy_ajp.c>
Include conf/extra/httpd-proxy.conf
</IfModule>
进入httpd-proxy.conf后面是代理配置:
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass /jsp/ ajp://localhost:8009/jsp/
ProxyPassReverse /jsp/ ajp://localhost:8009/jsp/
在tomcat的server.xml文件中,我们已经配置了AJP连接器,如下所示:
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpProtocol" redirectPort="8443" address="localhost"
enableLookups="true" maxThreads="500" connectionTimeout="120000" URIEncoding="UTF-8" />
现在,当我使用主机名和IP地址访问我的机器时,请求正常,并显示Login.jsp。 但是,如果我在服务器和客户端(从浏览器运行的地方)添加一个条目到一个别名到原始服务器名称,如下所示它不起作用。
some_ip_address original_host_name alias1 #This is alias
当我以http://alias1发出请求时,请求被重定向到Login.jsp,但页面没有出现。 在浏览器中,我可以看到网址为http://alias1/jsp/Login.jsp但页面不会出现。 在apache ajp日志中,我可以看到响应代码是200.所以不确定问题究竟在哪里 任何人都可以帮助我
答案 0 :(得分:0)
我假设您在尝试ajp之前使用了普通的mod_proxy,如果没有,你应该尝试一下。
以下是添加虚拟主机的示例代码,该虚拟主机将为Apache提供相同域和端口的页面,并将重定向到特定别名的Tomcat实例
char * getConcatString( const char *str1, const char *str2 )
{
char *finalString = NULL;
size_t n = 0;
if ( str1 ) n += strlen( str1 );
if ( str2 ) n += strlen( str2 );
if ( ( str1 || str2 ) && ( finalString = malloc( n + 1 ) ) != NULL )
{
*finalString = '\0';
if ( str1 ) strcpy( finalString, str1 );
if ( str2 ) strcat( finalString, str2 );
}
return finalString;
}
使用此顶部的实际URL不会更改为使用Tomcat端口的URL,但您的请求将被转发。如果需要,还可以在web.xml中为特定/路径添加URL映射,以进一步隔离请求。