Apache做負載平衡器時的編碼問題

來源:互聯網
上載者:User

在用Apache做負載平衡器的時候,與應用伺服器(Tomcat或JBoss)之間是通過AJP協議來通訊的。比如在JBoss裡是這樣配置的:

<Service name="jboss.web">    <!-- A HTTP/1.1 Connector on port 8080 -->    <Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"            connectionTimeout="20000" redirectPort="8443" />    <!-- A AJP 1.3 Connector on port 8009 -->    <Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"           redirectPort="8443" />    ......</Service>

注意,這兩個節點(HTTP和AJP)是沒有指定編碼格式的,而我們的頁面(JSP或PHP等)通常都是UTF-8編碼的,比如一個JSP頁面:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>

這樣,如果連結中中有中文(比如將中文作為查詢字串的參數),這段中文就會變為亂碼,導致應用程式出錯。

因此,如果是直接通過應用伺服器訪問,則要在HTTP的Connector節點中設定編碼格式:

<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"            connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

如果是通過Apache訪問,則要在AJP的Connector節點中設定編碼格式:

<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"           redirectPort="8443" URIEncoding="UTF-8" />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.