2014-10-02 1 views
1

난 레일이있는 웹 사이트를 개발하고, 앱의 동적 이름 확인을 설정하는 간단한 방법을 찾고있었습니다. 필자가 필요로하는 최종 제품은 다음과 같습니다. 레일 응용 프로그램을 시작할 때마다 (응용 프로그램 폴더에 레일 서버를 입력하여 임의의 포트에서 실행하고 브라우저에 응용 프로그램 이름을 입력하면됩니다 (예 : myapp.dev 또는 뭔가) 올바른 포트에서 localhost로 확인하십시오.이름을 로컬 호스트 포트로 임시 해결하는 방법은 무엇입니까?

응용 프로그램 이름을 얻고 임의의 포트를 생성하는 부분은 문제가 아닙니다. 문제는 로컬 포트로 이름을 확인하는 방법입니다. 내가 이것을 할 수있게 해주는 간단한 도구?

지금 당장 생각해 볼 수있는 가장 좋은 점은 레일즈 애플리케이션이 시작될 때를 추적하고, 포트에 주석을 달고, 그 자체에 엔트리를 추가하는 데몬을 시작하는 것이다. 앱 이름이 /etc/host 인 경우 요청을 받으면 올바른 앱 ba로 전달합니다. 이름으로 말하면 돼.

저는 이것이 가장 좋은 방법이라고 생각합니다. 그래서 아이디어는 높이 평가됩니다.

답변

1

정확하게 문제를 이해할 수 있을지 모르겠지만 DNS에 대해서는 포트가 아닙니다. DNS를 사용하여 이름을 IP가 아닌 포트 또는 IP에서 이름 (RevDNS)으로 해석 할 수 있습니다. 귀하의 경우에는 랜덤 포트에서 응용 프로그램을 시작하는 동안 항상 동일한 포트를 전달합니다. 예를 들어

는 : iptables에 의해

은 응용 프로그램의 임의의 포트에 포트 80을 전달합니다. 너무 오래이기 때문에 내가 코멘트에 붙여 넣습니다 수없는, 그래서 당신이 여기에 답을 제공 : 그럼 당신은 항상 80

편집 포트에 의해 응용 프로그램에 얻을 것이다

당신의 iptables 규칙을 많이 만들 수 있습니다 첫 번째 응용 프로그램은 포트 80, 다음 81 번 등에 있습니다. 브라우저에서는 apps.test.com (첫 번째 응용 프로그램), apps.test.com:81 (두 번째 응용 프로그램)을 입력해야합니다. 다른 솔루션 : 다른 도메인 (콜론 뒤에 포트를 입력하지 않음)을 원할 경우 프록시 서버 을 사용하고 VirtualHost를 사용하여 특정 응용 프로그램으로 리디렉션 할 수 있습니다. 프록시 구성에서 app1.test.com이 포트 (예 : 8888, app2.test.com)를 포트 8889로 이동 한 다음 응용 프로그램을 시작하는 동안 iptables 규칙 또는 ssh tunel을 만들어 포트 8888에서 전체 트래픽을 리디렉션 할 수 있습니다. 임의의 포트 루비 응용 프로그램입니다. 좀 더 복잡하게하지 않으려면, 프록시로 설정 한 포트는 루비 애플리케이션에서 사용하지 않는 것이 좋습니다. 또한 iptables "문자열 일치"옵션을 확인할 수 있습니다. HTTP 요청의 호스트 필드를 일치시킨 다음 시작 앱과 마찬가지로 iptables 규칙을 작성하여 호스트 필드를 지정하여 포트 80으로가는 모든 것을 루비 앱 포트 으로 리디렉션합니다. 마지막 옵션은 SRV DNS 레코드를 사용하는 것이지만 상황에서는 오히려 쓸모가 없습니다. 하지만 어쨌든이 모든 옵션을 가지고 놀 수 있으며 에 가장 적합한 옵션을 선택하십시오.

+0

의견을 보내 주셔서 감사합니다. 그러나 모든 응용 프로그램이 포트 80을 사용하기 때문에 한 번에 하나의 응용 프로그램 만 실행할 수 있습니다. DNS가 포트에 관한 것이 아니라고 했으므로 브라우저가 포트 80에 대한 모든 요청을해야하므로 제안 된대로 데몬을 사용하지 않는 한 다른 방법은 없을 것입니다. 맞습니까? – fotanus

관련 문제