apache+tomcat整合后的编码问题

apache+tomcat整合提供webserver服务的方式是为了实现两个目的:一是方便利用apache http server将客户请求均衡的分给tomcat1,tomcat2....去处理,即负载均衡;二是由于tomcat的html和图片解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而静态的内容,都是由apache来完成。

利用apache的mod_jk模块和tomcat的ajp协议,我们在应用中实现了这一整合,但在测试过程中发现,包含汉字的url(比如用户上传的中文文件名的图片或者文件)不能通过apache被访问,返回404错误,本来以为是apache的编码问题,由于以前在linux上配置apache经常会发生这个问题,所以一直围绕apache的httpd.conf中的language和charset配置作文章,半天未果,郁闷!!!

后来忽然想到,一直以来直接通过IP和端口访问tomcat是正常的,那么问题或者发生在apache和tomcat之间,于是思路豁然开朗。打开tomcat的配置文件server.xml,发现配置如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> 这里,对8080端口(HTTP)的访问指定了URI编码采用UTF-8,而8009端口(AJP)却未指定编码。既然未指定,tomcat缺省会使用ISO-8859-1编码,难怪汉字全成了乱码!!!操作系统接收到乱码的路径无法定位,服务器只好给出一个资源路径不能访问的404错误。于是立即给ajp端口也加上URIEncoding="UTF-8",变成: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

重启tomcat,一切正常,天下大定。

总结一: 包含汉字的url编码问题一直以来都是最让人头疼的,尤其是多系统整合时经常会出现乱码问题。因此,保持汉字编码在各个子系统或子模块中的一致性尤其重要。对于非国人编制的系统,其默认配置中的编码往往忽略了这个问题。

总结二: IE的默认设置中,URL采用UTF-8编码格式提交,apache2.2以后的windows版本默认的url解码也是utf-8,当apache2.2将请求通过ajp传递给tomcat时,必须保证tomcat在该端口也使用utf-8编解码,否则就会乱码。

时间: 2024-10-12 19:05:28

apache+tomcat整合后的编码问题的相关文章

Apache Tomcat 整合集群 session 共享

Apache Tomcat 整合集群 所需软件 CentOS6.5 64 Apache2.2.15 Tomcat7.0.62 JDK 1.8.0_45 tomcat-connectors 1.2.40 MySQL<可选> PHP<可选> 一   安装A服务器安装  IP  192.168.150.7 apache php mysql yum install httpd httpd-devel php php-devel php-gd php-mysql php-mbstring m

【4】Apache+Tomcat整合

虽然目前Nginx作为webserver服务器或代理服务器被广泛使用,但Apache还是运用于很多项目中.下面结合自己实际操做下记录. 一.Apache+Tomcat整合的优点 ? 1.1主要因为Apache有其独特的优点: 功能强大,apache自带了很多功能模块,可根据需求编译自己需要的模块. 配置简单,apache的配置文件非常简单,通过简单的配置可实现强大功能. 速度飞快,apache处理静态页面文件效率非常高,可以应对大并发和高负荷访问请求. 性能稳定,apache在高负荷请求下性能表

apache+tomcat 整合

本篇文章参考网上文档,以及自己实际操作而整合. linux是最常用的web服务器,本节我们将通过整合apache和tomcat构建一个java/jsp运行平台,详细介绍web服务器的搭建过程. 一.  apache与tomcat整合的必要性Apache是最流行的Web服务器,开放源代码,支持跨平台的应用(可以运行在几乎所有的Linux.Unix.Windows系统平台上),尤其对Linux的支持相当完美.apache的优点有: 功能强大,apache自带了很多功能模块,可根据需求编译自己需要的模

apache+tomcat整合

一 .Apache与Tomcat的比较 apache支持静态页面,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的. apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理.      apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp

apache+tomcat整合(二)

前面我介绍了apache+tomcat的mod_jk的整合方式,这里我介绍http_proxy的整合方式,系统环境和上篇的一样,只是重新编译了apache 重新编译apache,是为了让apache的配置文件中自动加载一些模块,编译方式: ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-rewrite=shared --enable-proxy --enable-proxy=shared -

apache+jetty整合

系统环境: [[email protected] etc]# uname -a Linux ORACLE 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux [[email protected] etc]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.8 (Tikanga) 软件版本: jetty-

Apache与Tomcat整合(转)

一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的. apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理. apache是web服    Options Includes FollowSymLinks    Allow

tomcat整合apache

历时4个多小时,终于把tomcat与apache整合起来了. 中间出了各种各样的问题,现记录一下,也希望能对后来者有点帮助. 背景 apache与tomcat的区别联系大家都知道: tomcat能处理jsp页面,也能处理html页面 apache只能处理静态资源,如html页面,图片,js等等,而且apache处理html页面比tomcat处理html的速度快. 那为了提升整个系统的访问速度. 我们就把apache与tomcat整合到一起,我们发的所有请求都是先给apache,如果具体的请求是h

Apache与tomcat整合配置

1.解压Apache tar zxvf httpd-2.4.18.tar.gz 把apr和apr-util包解压到Apache里的srclib目录里面 tar zxvf apr-1.4.6.tar.gz -C /home/software/httpd-2.4.18/srclib/ tar zxvf apr-util-1.5.2.tar.gz -C /home/software/httpd-2.4.18/srclib/ cd  /home/software/httpd-2.4.18/srclib/