В Rails я должен включить serve_static_assets? - PullRequest
3 голосов
/ 24 октября 2011

В настоящее время я использую Apache для прокси на Thin (используя эту статью )

Ни один из моих статических ресурсов не работает (например, таблицы стилей, javascripts).Apache должен обслуживать их или мне нужно включить config.serve_static_assets в config/environments/production.rb?Если Apache должен обслуживать их, то что я, вероятно, делаю неправильно?

Вот мой конфиг Apache:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com

  DocumentRoot /home/r/public_html/example/public

  RewriteEngine On

  <Proxy balancer://thinservers>
    BalancerMember http://127.0.0.1:5000
    BalancerMember http://127.0.0.1:5001
    BalancerMember http://127.0.0.1:5002
  </Proxy>

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

  ProxyPass / balancer://thinservers/
  ProxyPassReverse / balancer://thinservers/
  ProxyPreserveHost on

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

  # Custom log file locations
  ErrorLog  /home/r/public_html/example/log/error.log
  CustomLog /home/r/public_html/example/log/access.log combined

</VirtualHost>

1 Ответ

7 голосов
/ 30 ноября 2011

Удалите следующие две строки директив прокси, и это должно сработать:

ProxyPass / balancer://thinservers/
ProxyPassReverse / balancer://thinservers/

Первая строка перезаписи (RewriteCond) - это проверка, существует ли файл в файловой системе в общедоступном каталоге. Если происходит сбой, он переходит к следующей строке перезаписи (RewriteRule), которая передает запрос сбалансированному прокси. Эта строка фактически делает то же самое, что и две строки директив прокси.

Если тест пройден успешно (то есть статический файл существует), он пропустит эту строку. Если вы удалили две строки выше, apache будет обслуживать файл из корня документа. Однако, с вышеприведенными строками, он все равно будет передаваться через прокси. Тогда, как вы указали, рельсы не будут настроены для обслуживания этого файла по умолчанию и будут возвращать 404.

...