【问题标题】:Spree administration AJAX request works in development, 404s in production大礼包管理 AJAX 请求在开发中工作,404 在生产中
【发布时间】:2012-01-26 21:11:29
【问题描述】:

我正在 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"

【问题讨论】:

    标签: jquery ruby-on-rails-3.1 nginx passenger spree


    【解决方案1】:

    解决方案原来是 Nginx/Passenger。我发现 this mailing list thread 表明 Nginx 配置中的任何 location 块都需要自己的 passenger_enabled on; 指令。所以这个块

    # "Far-future" expiration dates
    location ~* \.(js|css|jpg|jpeg|gif)$ {
        if (-f $request_filename) {
            expires                        max;
            break;
        }
    }
    

    需要看起来像这样

    # "Far-future" expiration dates
    location ~* \.(js|css|jpg|jpeg|gif)$ {
        passenger_enabled on;
        if (-f $request_filename) {
            expires                        max;
            break;
        }
    }
    

    这解决了问题。

    【讨论】:

    • 我也有同样的问题。如果我有 Nginx/Unicorn 我该怎么办?
    • @zolter 我会发布一个新问题;我的解决方案是针对特定乘客的。我不太熟悉 Nginx 和 Unicorn 的接口方式,无法推测该解决方案是否会继续使用。
    猜你喜欢
    • 2014-09-16
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多