2012-01-26 2 views
0

Spree 0.70.3 및 Rails 3.1.3에서 사이트를 구축하고 있습니다. 개발 과정에서 나는 포트 3000에서 가볍게 실행했습니다. 생산 단계에서는 승객 3.0.9와 Nginx 1.0.8이 있습니다.Spree administration AJAX 요청이 개발 환경에서 작동합니다.

Spree의 Taxon과 제품을 연결하면 빈 Taxon 목록이있는 페이지가 나타납니다. 검색 창에 입력을 시작하면 AJAX 게시물 요청이 트리거되어 해당 문자열과 일치하는 Taxon을 찾고 제품에 대한 잠재적 인 분류군으로 표시합니다.

개발 중에는 정상적으로 작동합니다. 개발 로그에 요청이 들어오는 것을 볼 수 있으며 페이지에 taxon이 나타납니다. 프로덕션 환경에서 Chrome 콘솔은 AJAX 요청이 404 응답을 받고 있음을 보여줍니다. Nginx 로그는 단순히 404 응답을 기록합니다. Rails 로그에는 요청 기록이 표시되지 않습니다. 내 생각 엔 Nginx는 요청에 .js 파일 확장자가 있고 파일을 찾고 있는데, 이는 아마도 public/ 디렉토리에서 요청을 Rails로 보내는 것이 아닙니다.

누구든지 Spree/Nginx에서이 문제가 발생 했습니까? Nginx가 어떻게 요청을 해결하려고하는지에 대한 더 많은 데이터를 기록하도록 할 수 있습니까? 여기에서 확인해야 할 Nginx 설정에 관한 것이 있습니까?

ETA : Nginx 로깅을 강화했으며 Nginx가 Passenger and Rails에 요청을 전달하는 대신 실제 파일로 .js 파일을 찾고있는 것처럼 보입니다. 이것을 구성 할 수 있습니까?

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" 

답변

0

솔루션은 Nginx/Passenger로 밝혀졌습니다. Nginx 구성 내의 location 블록에 자체 passenger_enabled on; 지시문이 필요하다는 것을 나타내는 this mailing list thread을 발견했습니다. 그래서이 블록

# "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; 
    } 
} 

같이 할 필요가 있었다.

+0

동일한 문제가 있습니다. Nginx/Unicorn을 가지고 있다면 어떻게해야합니까? – zolter

+0

@zolter 나는 그것에 대해 새로운 질문을 게시 할 것이다. 내 솔루션은 승객 특유의 것입니다. Nginx와 Unicorn 인터페이스가이 솔루션이 이월할지 여부를 추측하는 방법에 대해 충분히 익숙하지 않습니다. – pjmorse

관련 문제