2012-08-09 6 views
1

나는 앱 스토어에 interects와 함께 Rokuful Rails 앱이 Heroku에서 호스팅되는 앱을 가지고 있습니다. 최상위 도메인을 사용하는 대신 API의 기본 URL을 myapp.heroku.com으로 하드 코딩하는 실수를 저질렀습니다.Heroku 하위 도메인 요청을 다른 IP로 리디렉션

저는 이제 새로운 서버로 마이그레이션하는 과정에 있습니다. 따라서 내 iPhone 응용 프로그램 사용자와 원활하게 전환 할 수있는 옵션을 확인하려고합니다. 그 heroku 하위 도메인에서 내 새 서버 주소로 모든 트래픽을 리디렉션하는 Rake 응용 프로그램을 만들 생각 이었지만 HTTP 1.1이 POST 리디렉션 (여러 POST 끝점을 갖는 API)을 허용하지 않는다는 것을 읽었습니다. 항상 POST 요청을 GET 서버로 리디렉션 할 수는 있지만 확실히 느껴지지는 않습니다.

누락 된 다른 옵션이 있습니까? Heroku가 내 하위 도메인의 A 레코드를 변경하여 새 서버 IP를 가리키는 방식은 있습니까?

답변

3

존이 말했듯이 결국 앱에서 API 끝점을 변경하면서 작업을 마쳤습니다. (그들에 하드 코딩 Heroku가 하위 도메인이) 응용 프로그램의 작업의 이전 버전을 유지하기 위해, 나는이 빠른시나 응용 프로그램을 작성 결국 그것은 내 원래 Heroku가 응용 프로그램 대체 :

require 'sinatra' 
require 'mechanize' 

API_BASE_URL = "http://newdomain.com" 

get '/*' do |path| 
    url = URI("#{API_BASE_URL}/#{path}") 

    agent = Mechanize.new 
    agent.user_agent = request.user_agent 

    headers = {'AUTHORIZATION' => request.env['HTTP_AUTHORIZATION']} 

    page = agent.post(url, params, headers) 

    content_type :json 
    page.body 
end 


get '/*' do |path| 
    url = URI("#{API_BASE_URL}/#{path}") 

    agent = Mechanize.new 
    agent.user_agent = request.user_agent 

    headers = {'AUTHORIZATION' => request.env['HTTP_AUTHORIZATION']} 

    page = agent.get(url, params, nil, headers) 

    content_type :json 
    page.body 
end 

(이 코드는 아마 줄일 수를 단일 방법으로 내림)

+0

첫 번째 경로는 '/ *'do | path | . –

1

* .heroku.com은 와일드 카드 DNS 항목이며 사이트가 추가 될 때마다 새 하위 도메인을 추가하지 않습니다.

제대로 해결하는 것이 가장 좋은 해결책 인 것 같습니다. Heroku의 기존 응용 프로그램에 새 도메인을 연결하면 app.heroku.com 및 yourcustomdomain.com에서 계속 액세스 할 수 있습니다.

그런 다음 iOS 애플리케이션을 업데이트하여 엔드 포인트에 대한 새 맞춤 도메인을 사용하십시오. 일단 모든 것이 작동하면 DNS 항목의 TTL을 줄인 다음 새 서버에서 repoint하십시오.

+0

내 모든 사용자가 새 API 끝점을 사용하는 최신 앱 버전으로 업데이트되기까지 몇 달에서 몇 년이 걸릴 수 있습니다. – samvermette

관련 문제