Apache / Unicorn: como fazer com que o Apache sirva arquivos estáticos

2

Estou seguindo este tutorial para instalar o apache + unicórnio, mas parece que o apache não serve nenhum dos arquivos estáticos. Aqui está a configuração que eu criei (dê uma olhada no Redirect all non-static requests to unicorn em particular):

<VirtualHost *:80>
  ServerName www.unstilted.com:80
  ServerAlias *.unstilted.com
  DocumentRoot /var/www/unstilted/current/public

  ErrorDocument 503 /system/maintenance.html

  RewriteEngine On

  RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond %{REQUEST_FILENAME} !/system/maintenance.html
  RewriteRule ^.*$    /system/maintenance.html [L]

  # Rewrite to check for Rails non-html cached pages (i.e. xml, json, atom, etc)
  RewriteCond  %{THE_REQUEST} ^(GET|HEAD)
  RewriteCond  %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI} -f
  RewriteRule  ^(.*)$ /cache/%{HTTP_HOST}$1 [QSA,L]

  # Rewrite to check for Rails cached html page
  RewriteCond  %{THE_REQUEST} ^(GET|HEAD)
  RewriteCond  %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}.html -f
  RewriteRule  ^(.*)$ /cache/%{HTTP_HOST}$1.html [QSA,L]

  # no www
  RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  RewriteRule ^(.*)$ http://%1$1 [R=301,L]

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

  # Redirect all non-static requests to unicorn
  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>
</VirtualHost>

No meu diretório /var/www/unstilted/current/public , tenho robots.txt, mas quando vou para mydomain.com/robots.txt , a solicitação vai para o unicórnio e não é tratada pelo apache.

O que há de errado com minha configuração? E como obtenho o Apache para servir os arquivos estáticos?

Obrigado!

    
por Ramon Tayag 02.10.2011 / 16:05

1 resposta

2

Perca o %{DOCUMENT_ROOT} nessa condição. %{REQUEST_FILENAME} é o caminho completo do sistema de arquivos (não URL) para o arquivo, portanto, ele deve ser compatível assim:

RewriteCond %{REQUEST_FILENAME} !-f
    
por 02.10.2011 / 18:43