ApacheのReverse Proxyで502 Proxy Errorが出力される
node.js + socket.io(websocket)を使った開発をしていて、たまに下記Errorが出力される。
GET http://dev.hoge.com/socket.io/xhr-polling/5791412864346057/1307368752522 502 (Proxy Error)
(結果だけ知りたい人はこの記事の一番下へ。)Google先生に聞いてみると、apacheのversionを上げると直るという情報がHit。
下記記事を参考にyum経由で上げようとしてみた。今の環境はCentOS 5.6 + apache 2.2.3
# vi /etc/yum.repos.d/utter.repo
[utter]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
# yum --enablerepo=utter install httpd
でも、already installedと言われた。なんか依存関係でInstallできないのかな?wingも駄目だった。
「どーしたもんかなー」と調べ直してみたら、下記の情報がhit。
apacheのconfに下記のようにproxy-nokeepaliveを追記してみたら、あっさり直った。
<Proxy *>
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Proxy>
もしくは
<Location /hoge>
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
詳しくはApacheのmod_proxyのReferenceを参照。
< 2011/07/01 Modified >
さらに下記Errorが出るのでforce-proxy-requestも追記。・・・と思ったけど、force-proxy-requestを追加しても再現する。Lamppのapache経由だと発生しないんだけどなー。
events.js:45
throw arguments[1]; // Unhandled 'error' eventError: EBADF, Bad file descriptor
< 2012/10/06 Modified >
Windows 2003 ServerのIISにRedirectすると下記Errorが頻発するようになった。
Proxy Error
The proxy server received an invalid response from an upstream server
ここを参考にProxyPassにkeepalive=onを追加したら大丈夫っぽい。やっぱりダメ。IP Addressを直接叩けば大丈夫なので、apacheとiisの相性なのか。。。?
ProxyPass /hoge http://192.168.0.22/hoge timeout=600 keepalive=On
詳しくは下記Official Documentで。
< Related Posts >