2011-11-14 18 views
8

Tengo configuración de Rails 3.1, Unicorn y Apache. Mi configuración de Apache está debajo y production.rb se parece a this. Me gusta usar la transmisión h264, pero dado que Rails está publicando estos archivos de video, la Apache Mod no funcionará.Rails 3.1, Unicorn y Apache: archivos estáticos

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 

Tengo que habilitar serve_static_assets o no puedo descargar ningún elemento estático. También precompilé activos, pero no hará ninguna diferencia, ya que no hay ningún archivo disponible en el directorio público a menos que Rails (Rack, supongo) esté haciendo la publicación.

Debo usar config.action_controller.asset_host o hay algún problema con mi configuración de Apache.

Respuesta

19

Tengo un post para este problema (sí, también me pasó a mí), espero que ayude.

El punto clave es eliminar ProxyPass/balancer://unicornservers/ patrón, ya que anularía su Rewrite Rule

Aquí está mi configuración del servidor 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

Esto funcionó, gracias! por cierto. El enlace de su artículo apunta a localhost. – jiriki

+0

He reparado el enlace, ¡gracias! – Manic

+1

perfecto, tiene todo el sentido, todas las guías que he encontrado para rieles 3 + apache + unicon/thin tienen este problema – Rob

0

Sólo a partir de su código 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 

Trate de quitar los comentarios de una línea con cabecera 'X-Sendfile', reinicie la piscina de su unicornio y vuelva a intentarlo.

+0

Gracias pero esto no sirvió de nada. – jiriki

Cuestiones relacionadas