[問] Apache 2.2 <-> mod_proxy_ajp <-> Tomcat 5.5

以往在用開jk 1.2, 沒什麼大問題. 今天安裝一新server, 嘗試使用Apache 2.2中的mod_proxy, 沒想到搏鬥了一天, 仍是不得要領.

使用的是Debian Etch, Apache 2.2, Tomcat 5.5

做了一個hello world jsp, 在Tomcat的Http connector, 是可以成功打開

但從Apache經mod_proxy連到Tomcat的ajp connector時, Tomcat 總是說 "The requested resource (/) is not available."

麻煩大家可否給點建議應從何入手? 我知道問得不太好, 但實在沒有什麼頭緒, 在mod_proxy所提供的有限選項中, 可能出錯的地方實在不多, 但就偏偏連不上...

------

httpd.conf:

<IfModule mod_proxy_ajp.c>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
        addDefaultCharset UTF-8
        Order Allow,Deny
        Allow from all
</Proxy>
ProxyPass /test.jsp ajp://localhost:8009/
</IfModule>

 Listen 8080
<VirtualHost *:8080>
        DocumentRoot /var/www/
        <Directory /var/www/>
                Order Allow,Deny
                Allow From All
        </Directory>
        <Directory /var/www/inc/>
                Order Deny,Allow
                Allow From 127.0.0.1
        </Directory>
        <Directory /var/www/private/>
                Options +Indexes
                Order Deny,Allow
                Allow From 192.168.5.
        </Directory>
</VirtualHost>

------

Apache's error log:

[Thu Aug 23 00:45:02 2007] [debug] mod_proxy_ajp.c(44): proxy: AJP: canonicalising URL //localhost:8009/
[Thu Aug 23 00:45:02 2007] [debug] proxy_util.c(1378): [client 192.168.5.1] proxy: ajp: found worker ajp://localhost:8009/ for ajp://localhost:8009/
[Thu Aug 23 00:45:02 2007] [debug] mod_proxy.c(756): Running scheme ajp handler (attempt 0)
[Thu Aug 23 00:45:02 2007] [debug] mod_proxy_ajp.c(497): proxy: AJP: serving URL ajp://localhost:8009/
[Thu Aug 23 00:45:02 2007] [debug] proxy_util.c(1798): proxy: AJP: has acquired connection for (localhost)
[Thu Aug 23 00:45:02 2007] [debug] proxy_util.c(1858): proxy: connecting ajp://localhost:8009/ to localhost:8009
[Thu Aug 23 00:45:02 2007] [debug] proxy_util.c(1951): proxy: connected / to localhost:8009
[Thu Aug 23 00:45:02 2007] [debug] proxy_util.c(2045): proxy: AJP: fam 2 socket created to connect to localhost
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(218): Into ajp_marshal_into_msgb
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[0] [Accept] = [image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[1] [Accept-Language] = [zh-hk]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[2] [UA-CPU] = [x86]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[3] [Accept-Encoding] = [gzip, deflate]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[4] [User-Agent] = [Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[5] [Host] = [192.168.5.5:8080]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[6] [Connection] = [Keep-Alive]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[7] [Cookie] = [JSESSIONID=9B6EBC73BA13B2608C7936E57D2A13A6]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(284): ajp_marshal_into_msgb: Header[8] [Max-Forwards] = [10]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(424): ajp_marshal_into_msgb: Done
[Thu Aug 23 00:45:02 2007] [debug] mod_proxy_ajp.c(187): proxy: APR_BUCKET_IS_EOS
[Thu Aug 23 00:45:02 2007] [debug] mod_proxy_ajp.c(192): proxy: data to read (max 8186 at 4)
[Thu Aug 23 00:45:02 2007] [debug] mod_proxy_ajp.c(207): proxy: got 0 bytes of data
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(643): ajp_read_header: ajp_ilink_received 04
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(653): ajp_parse_type: got 04
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(484): ajp_unmarshal_response: status = 404
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(495): ajp_unmarshal_response: Number of headers is = 2
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(557): ajp_unmarshal_response: Header[0] [Content-Type] = [text/html;charset=utf-8]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(567): ajp_unmarshal_response: ap_set_content_type done
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(557): ajp_unmarshal_response: Header[1] [Content-Length] = [949]
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(643): ajp_read_header: ajp_ilink_received 03
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(653): ajp_parse_type: got 03
[Thu Aug 23 00:45:02 2007] [debug] mod_headers.c(612): headers: ap_headers_output_filter()
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(643): ajp_read_header: ajp_ilink_received 05
[Thu Aug 23 00:45:02 2007] [debug] ajp_header.c(653): ajp_parse_type: got 05
[Thu Aug 23 00:45:02 2007] [debug] mod_deflate.c(447): [client 192.168.5.1] Zlib: Compressed 949 to 360 : URL /test.jsp
[Thu Aug 23 00:45:02 2007] [debug] mod_proxy_ajp.c(440): proxy: got response from (null) (localhost)
[Thu Aug 23 00:45:02 2007] [debug] proxy_util.c(1816): proxy: AJP: has released connection for (localhost)
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1625): proxy: grabbed scoreboard slot 0 in child 2466 for worker ajp://localhost:8009/
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1644): proxy: worker ajp://localhost:8009/ already initialized
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1724): proxy: initialized single connection worker 0 in child 2466 for (localhost)
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1625): proxy: grabbed scoreboard slot 1 in child 2466 for worker proxy:reverse
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1644): proxy: worker proxy:reverse already initialized
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1724): proxy: initialized single connection worker 1 in child 2466 for (*)
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1610): proxy: worker ajp://localhost:8009/ already initialized
[Thu Aug 23 00:45:03 2007] [debug] proxy_util.c(1610): proxy: worker ajp://localhost:8009/ already initialized

評論查看選項

選擇你喜歡的顯示回應的模式,並點選「儲存設定」,以啟用你所做的改變。

自己的問題自己解決...

現在發現原來正確的語法應該是

ProxyPass /test.jsp ajp://localhost:8009/test.jsp

而不是

ProxyPass /test.jsp ajp://localhost:8009/

實在有點汗顏...