Django 프로젝트를 별도로 유지하기 위해 여러 nginx 인스턴스

Django 프로젝트를 별도로 유지하기 위해 여러 nginx 인스턴스

저는 Debian 6에서 Django + PostrgreSQL + Nginx를 사용하여 앱을 만들고 있습니다. 이 앱에는 나중에 다른 컴퓨터에 설치될 두 개의 별도 구성 요소가 있습니다.

성분 A REST API를 사용하여 구성 요소 B에서 하나의 함수를 호출합니다. 여기에는 구성 요소 A에서는 읽기 전용이지만 구성 요소 B에서는 쓸 수 있는 민감한 데이터가 저장되어 있습니다.

성분 B 데이터에 민감한 데이터를 구성요소 A에 기록하고 해당 API를 통해 데이터를 수신합니다.

내가 원하는 것은 이러한 구성 요소를 분리하여 Comp B의 노출로 인해 Comp A의 민감한 데이터가 노출되지 않도록 하는 것입니다. 그렇게 하기 위해 서로 다른 Linux 사용자에서 실행되는 nginx 인스턴스 2개를 고려하고 있었습니다. 그러면 구성 요소 B가 실행되는 사용자는 settings.pyA의 데이터베이스에 대한 로그인 자격 증명과 저장된 데이터의 암호화 키를 노출하는 Comp A의를 볼 수 없습니다.

내 질문은,각각 자체 사용자 계정으로 2개의 인스턴스를 실행하도록 nginx를 설정하려면 어떻게 해야 합니까?가능하다면 자동 업그레이드를 잃지 않도록 표준 데비안 리포지토리에서 사용 가능한 패키지만 사용하고 싶습니다.

답변1

원하는 분리를 얻기 위해 실제로 2개의 nginx 인스턴스가 필요하지 않은 것 같습니다.

nginx, app1, app2라는 3개의 에이전트가 상호 작용합니다. 이 시나리오에서 nginx는 실제로 데이터를 직접 처리하지 않고 단순히 들어오는 http 요청을 app1 또는 app2로 라우팅하므로 실제로 누출될 데이터가 없습니다.

당신이 정말로 원하는 것은 app1이 app 2의 데이터를 얻을 수 없도록 권한을 설정하여 2개의 django 앱을 다른 사용자로 실행하는 것입니다(rest-api를 통한 경우 제외).

nginx가 앱과 통신하는 방법을 지정하지 않지만 모든 일반적인 메커니즘(fastcgi, 역방향 프록시, scgi 등)을 사용하면 각 앱에 대해 별도의 프로세스를 갖는 것이 매우 쉽습니다.

nginx 측에서는 각각 자체 하위 도메인/도메인 이름을 가진 2개의 서버 블록을 가짐으로써 깔끔하게 분리할 수 있습니다.

더 많은 마음을 위해 몇 가지를 추가할 수 있습니다.http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers구성요소 B nginx 구성에 대한 지시문을 사용하여 지정된 REST-api URL에서 외부/구성요소A 참조만 허용하는지 확인합니다.

답변2

사용하는 것이 좋은 방향이라는 것을 알았습니다.fastcgi다음과 같이 Comp B를 시작합니다.

 sudo -u youruser manage.py runfcgi

관련 정보