Rails 3.1, Unicorn и Apache: статические файлы - PullRequest
8 голосов
/ 14 ноября 2011

У меня есть Rails 3.1, Unicorn и Apache.Мои настройки Apache находятся ниже, и production.rb выглядит как this .Мне нравится использовать потоковую передачу h264, но так как Rails обслуживает эти видеофайлы, Apache Mod не будет работать.

DocumentRoot /blabla/current/public

RewriteEngine On
Options FollowSymLinks

<Proxy balancer://unicornservers>
  BalancerMember http://127.0.0.1:4000
</Proxy>

# Redirect all non-static requests to rails
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L]

ProxyPass / balancer://unicornservers/
ProxyPassReverse / balancer://unicornservers/
ProxyPreserveHost on

<Proxy *>
 Order deny,allow
 Allow from all
</Proxy>

XSendFile On
XSendFileAllowAbove on

Мне нужно включить serve_static_assets, или я не могу загрузить статические файлы.У меня также есть предварительно скомпилированные ресурсы, но это не будет иметь никакого значения, поскольку ни один файл не доступен из общедоступного каталога, если только Rails (Rack, я думаю) не выполняет обслуживание.что-то не так с моим конфигом Apache.

Ответы [ 2 ]

19 голосов
/ 22 февраля 2012

У меня есть сообщение для этой проблемы (да, это также случилось со мной), надеюсь, это поможет.

Ключевым моментом является удаление шаблона ProxyPass / balancer://unicornservers/, посколькупереопределите ваш Rewrite Rule

Вот мой конфиг сервера apache.

<VirtualHost *:80>

  ServerName example.org
  DocumentRoot /dir/of/your/project

  RewriteEngine On

  # Redirect all non-static requests to unicorn
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L]

  <Proxy balancer://unicornservers>
    BalancerMember http://127.0.0.1:2007
  </Proxy>

</VirtualHost>
0 голосов
/ 14 ноября 2011

Только из вашего кода production.rb:

# Specifies the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

Попробуйте раскомментировать строку с заголовком X-Sendfile, перезапустите пул Unicorn и попробуйте снова.

...