Django가 Apache 뒤에서 Gunicorn을 실행할 때 어떻게 양손잡이로 다른 호스트를 처리할 수 있나요?

StackOverflow https://stackoverflow.com//questions/22081518

문제

동일한 사이트의 여러 변형을 실행하고 싶은 Django 설치가 있습니다.다양한 JavaScript 프레임워크로 구현된 XYZ를 입증하는 궁극적인 목표를 가지고 동일한 데이터, 다른 정적 콘텐츠를 제공합니다.나는 다른 홈 페이지를 로드하고 싶고, 그 홈 페이지는 고유한 정적 콘텐츠를 가져오고 싶습니다.(의도한 모든 프로젝트는 SPA입니다.)

나는 해결책을 시도했다. Django 템플릿 내에서 내 사이트의 도메인 이름을 어떻게 얻을 수 있나요?, 그러나 내 시스템에서는 현재 사이트가 'pragmatometer.com'이라는 호스트 이름을 제공하지 않습니다.Django/Gunicorn이 페이지를 localhost로 제공하기 때문에 호스트 이름은 'localhost:8000'입니다./etc/hosts에서 pragmatometer.com이 127.0.0.1임을 지정하고 pragmatometer.com에 대한 Apache 프록시를 사용하려고 시도했지만 오류가 발생했습니다.따라서 서로 다른 포트에서 별도의 호스트를 실행하여 고유하게 프록시 설정해야 하거나 홈페이지를 URL별 랜딩 페이지로 리디렉션하도록 할 가능성이 열려 있습니다. 이 솔루션은 xyz.pragmatometer.com의 깨끗한 URL을 희생하여 XYZ 프레임워크 구현.JavaScript를 사용하여 덕트 테이프를 붙이는 방법이 여러 가지 있는데, 그 중 미래의 상사에게 보여주고 싶은 방법은 한두 가지뿐입니다.

이상적으로는 여러 (하위)도메인의 루트 URL이 하위 도메인별 홈페이지와 /load/*, /save/* 등.일관성을 유지합니다.또한 루트 URL이 자체 CSS 및 JavaScript를 가져오도록 하고 싶지만 루트 URL이 적절하게 작동하도록 할 수 있다면 충분히 쉽습니다.

지금까지 내가 본 최고의 솔루션은 동일한 IP를 수신하는 별도의 서버 프로세스를 보유하지만 동형 서버가 다른 포트에서 실행되고 다른 Apache VirtualHosts에 의해 프록시되도록 하는 것입니다.또는 JavaScript가 URL을 감지하고 약간의 냄새가 나는 도메인의 "실제" 색인으로 페이지를 덮어쓰게 합니다.

더 나은 솔루션이나 위의 의도를 잘 실행하는 방법에 대한 의견이 있으십니까?

--편집하다--

또는 조금 더 깔끔한 또 다른 접근 방식은 다음과 같습니다.

콘텐츠를 로드하는 홈 이미지가 있어야 합니다. /framework/ 각 프레임워크에 대해 document.write()를 수행합니다. ~ 후에 document.write()가 기존 페이지 내용을 망칠 만큼 페이지가 로드되었습니다.

jQuery를 사용하여 이러한 방식으로 페이지를 뭉개고 로드하면 프레임워크가 적절하게 작동하는 데 방해가 되는 오염이 남을까요?

도움이 되었습니까?

해결책

당신의 스택은 좀 미친 것 같습니다.

당신이 원하는 하나 다음으로 액세스할 수 있는 Django가 있는 웹서버 다수의 도메인.각 도메인은 Django 애플리케이션이 다른 콘텐츠를 제공하도록 합니다.내가 당신을 올바르게 이해했나요?

그렇다면 Apache를 Nginx로 교체하면 성공할 수 있습니다.요청하는 호스트 이름을 확인하고 요청을 리디렉션하는 방법을 결정할 수 있습니다.

Nginx에서 $host와 $http_host의 차이점은 무엇입니까?

하나의 Django 프로젝트로 여러 도메인 호스팅

업데이트

서로 다른 호스트 이름을 구별하기 위한 관련 nginx 문서:http://nginx.org/en/docs/http/request_processing.html http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name

요청 헤더 추가에 대한 관련 nginx 문서:http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header

이 답변도 참조하십시오.nginx에서 헤더(HTTP) 추가 및 사용

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top