Proxy Errors with unicorn and apache2 reverse proxy
Out Of Date Warning
This article was published on 22/05/2012, this means the content may be out of date or no longer relevant.
You should verify that the technical information in this article is still up to date before relying upon it for your own purposes.
I usually used thin as app-server for Rails in combination with Apache2 as webserver. I tried using unicorn instead, because I read a lot of interesting articles about it. Unfortunatly, now I got a lot of error messages like that when uploading files:
[Tue May 22 22:56:31 2012] [error] [client 146.52.xx.xx] proxy: Error reading from remote server returned by /photos/upload, referer: http://pics.stefanwienert.de/ [Tue May 22 22:58:49 2012] [error] (103)Software caused connection abort: proxy: pass request body failed to 127.0.0.1:9001 (127.0.0.1) [Tue May 22 22:58:49 2012] [error] proxy: pass request body failed to 127.0.0.1:9001 (127.0.0.1) from 146.52.xx.xx () [Tue May 22 22:59:01 2012] [error] proxy: client 146.52.xx.xx given Content-Length did not match number of body bytes read
Switching back to thin and the following config works fine:
--- chdir: /apps/pics/prod/current log: log/thin.log port: 9001 environment: production pid: tmp/pids/thin.pid servers: 4 onebyone: true wait: 60 timeout: 600 max_persistent_conns: 512
Important is the timeout of 10minutes here, to complete large uploads of pictures. For reference, this is my apache vhost conf:
BalancerMember http://127.0.0.1:9001 BalancerMember http://127.0.0.1:9002 BalancerMember http://127.0.0.1:9003 BalancerMember http://127.0.0.1:9004ProxyRequests Off ProxyBadHeader Ignore ProxyPass / balancer://unicornservers/ ProxyPassReverse / balancer://unicornservers/ ProxyPreserveHost on ProxyPass /photos/large ! ProxyPass /photos/original ! ProxyPass /photos/thumb ! Order deny,allow Allow from allAllowEncodedSlashes on SetEnv force-proxy-request-1.0 1 SetEnv proxy-nokeepalive 1 SetEnv proxy-initial-not-pooled 1
I found the last environment settings in some post about apache proxy problems.
Maybe someone with the same problem can take this as a starting point to fix this kind of problem with unicorn. I switch back to thin, which is fine.