2013-06-24 3 views
0

Rails가 아닌 비 Ruby 서버 프로세스를 가능한 한 원활하게 통합하고자하는 Rails 앱이 있습니다. 즉, Rails 앱과 동일한 서버에서 실행중인 Haskell Snap 웹 애플리케이션이 특정 경로를 처리하도록하고 싶습니다. 이러한 경로는 모두 JSON 페이로드를 반환하므로 템플릿이 복잡하지 않습니다. CORS 설정의 오버 헤드를 피하기 위해 이러한 JSON 응답을 Rails에서 생성 한 웹 페이지와 동일한 소스에서 가져 오는 것처럼 보이기를 바랍니다.Ruby가 아닌 서버 프로세스를 Rails 애플리케이션에 통합하고자하는 경우

이 상황에서 가장 좋은 통합 전략은 무엇입니까? 하스켈 웹 애플리케이션에 웹 요청을 한 다음 클라이언트에게 응답을 전달하는 Rails 컨트롤러를 설정해야합니까, 아니면 랙 미들웨어 또는 Nginx 구성을 사용하여보다 효율적인 방법이 있습니까?

답변

1

가장 간단한 방법은 하위 디렉토리에서 nginx의 역방향 프록시를 사용하는 것입니다. 스냅 응용 프로그램이 실행되는 곳을

location /snap { 
    rewrite /snap/(.*) /$1 break; 
    proxy_pass http://localhost:8000; 
    proxy_redirect off; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

변경 localhost:8000 : (this question 기준) 예를 들어.

디렉터리 이름을 snap에서 원하는 것으로 변경할 수도 있습니다. 에서 주소를 변경하고 표시되는 위치는 모두이며 RoR 애플리케이션의 모든 경로와 충돌하지 않는지 확인하십시오. 당신은 하스켈 응용 프로그램의 데이터에 액세스하기 위해 루비 응용 프로그램을 통해 인증/권한 부여를 사용하려는 경우


그러나 그 수 있기 때문에 쉽게 자신의 프록시 컨트롤러를 만드는 첫 번째 제안을 구현하기 위해 찾을 수 있습니다 Haskell 앱을 호출하기 전에 Rails 앱의 로그인 로직을 사용한다.