#ruby-on-rails #apache #sockets #unix #unicorn
#ruby-on-rails #apache #сокеты #unix #unicorn
Вопрос:
Как мы можем выполнить приведенную ниже конфигурацию 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;
}
...
...
}
}
Комментарии:
1. У кого-нибудь есть какой-либо ответ на это?
Ответ №1:
После довольно продолжительных поисков я пришел к выводу, что использование Apache2 Unicorn через сокеты невозможно. Самое дальнее, чего я добился, это использовал mod_fastcgi в файле сокета, который предоставляет unicorn, но при попытке получить доступ к странице я получил запрет 403. Похоже, что для FastCGI требуется протокол, отличный от используемого Unicorn. Придерживайтесь решения от Марка Колесара, если вам нужно использовать Unicorn с Apache. Имейте в виду, что вы можете столкнуться с проблемами (взяты из http://rubyforge.org/pipermail/mongrel-unicorn/2011-July/001057.html ):
Apache Unicorn по-прежнему не поддерживается, поскольку (насколько кому-либо известно) он не полностью буферизует ответы и запросы, чтобы полностью изолировать Unicorn от вредного воздействия медленных клиентов.
Ответ №2:
ProxyRequests отключен
ProxyPass /таблицы стилей/ !
ProxyPass /javascripts/ !
ProxyPass /изображения/ !
ProxyPass / http://example.com:8080 /
ProxyPassReverse /http://example.com:8080 /
Комментарии:
1. Спасибо, Марк, значит, Apache не может пересылать запросы на сокет, верно?
Ответ №3:
Разве вы не можете сделать это, используя 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
}