Proxy Apache Load Balancers для Unix Socket вместо порта - PullRequest
3 голосов
/ 25 апреля 2011

Как мы можем выполнить приведенную ниже конфигурацию Nginx в Apache?
В основном проксирование к сокету Unix вместо порта с балансировкой нагрузки.
Я хочу, чтобы Unicorn обрабатывал балансировку нагрузки вместо Apache.

upstream unicorn_server {
  server unix:/home/prats/public_html/myapp/current/tmp/sockets/unicorn.sock
  fail_timeout=0;
}

server {
    ...
    ...
    ...
  location / {
    ...
    ...    
    # If you don't find the filename in the static files
    # Then request it from the unicorn server
    if (!-f $request_filename) {
      proxy_pass http://unicorn_server;
      break;
    }
    ...
    ...
  }
}

Ответы [ 3 ]

3 голосов
/ 11 января 2012

После долгого поиска я пришел к выводу, что использование Apache2 + Unicorn через сокеты невозможно. Самое большее, что я получил, - это использование mod_fastcgi в файле сокета, который предоставляет Unicorn, но я получил 403 Запрещено при попытке доступа к странице. Кажется, что FastCGI требует другого протокола, чем тот, который использует Unicorn. Придерживайтесь решения от Марка Колесара, если вам нужно использовать Unicorn с Apache. Помните, что у вас могут возникнуть проблемы (взято из http://rubyforge.org/pipermail/mongrel-unicorn/2011-July/001057.html):

Apache + Unicorn все еще не поддерживается, поскольку (насколько известно), он не полностью буферизует ответы и запросы на полную изоляцию Единорог от вредного воздействия медленных клиентов.

2 голосов
/ 22 мая 2011

ProxyRequests Off

ProxyPass / таблицы стилей /!

ProxyPass / javascripts /!

ProxyPass / images /!

ProxyPass / http://example.com:8080/

ProxyPassReverse / http://example.com:8080/

0 голосов
/ 12 января 2013

Не можете ли вы сделать это с помощью UnixCat между?Наличие прокси-сервера для localhost: что-то установленное xinetd + unixcat /etc/xinetd.d/unicorn держа:

service livestatus
{
    type        = UNLISTED
    port        = someport
    socket_type = stream
    protocol    = tcp
    wait        = no
    cps         = 100 3
    instances   = 500
    per_source  = 250
    flags       = NODELAY
    user        = someone
    server      = /usr/bin/unixcat
    server_args = /var/run/unicorn/mysocket
    only_from   = 127.0.0.1
    disable     = no
}
...