Я строю сайт на Spree 0.70.3 и Rails 3.1.3. В разработке я просто использую порт 3000; в производстве у нас есть Passenger 3.0.9 и Nginx 1.0.8.
При связывании продукта с таксоном в Spree вы переходите на страницу с пустым списком таксонов. При вводе в поле поиска запускается запрос публикации AJAX, чтобы найти таксоны, соответствующие этой строке, и отобразить их в качестве потенциальных таксонов для продукта.
В разработке это работает нормально; Я вижу запросы, поступающие в журнал разработки, и на странице появляются таксоны. В производственной среде консоль Chrome показывает, что запрос AJAX получает ответ 404. Журналы Nginx просто записывают ответ 404; журналы Rails не показывают записи запроса. Я предполагаю, что Nginx видит, что запрос имеет расширение .js
, и ищет файл, возможно, в каталоге public/
, а не отправляет запрос в Rails.
Кто-нибудь сталкивался с этой проблемой со Spree / Nginx раньше? Как я могу заставить Nginx регистрировать больше данных о том, как он пытается разрешить запрос? Что-нибудь о конфигурации Nginx, которую я должен здесь проверить?
ETA: я ускорил ведение журнала Nginx, и он определенно выглядит так, как будто Nginx ищет файл .js
как фактический файл, а не передает запрос Passenger и Rails. Это можно настроить?
2012/01/27 14:33:17 [error] 4430#0: *2 open() "/var/www/live/current/public/admin/products/<product_slug>/taxons/available.js" failed (2: No such file or directory), client: 64.134.40.51, server: <obfuscated>.com, request: "POST /admin/products/<product_slug>/taxons/available.js HTTP/1.1", host: "<obfuscated>", referrer: "https://<obfuscated>/admin/products/<product_slug>/taxons/selected"