2017-01-07 1 views
0

동일한 컴퓨터에서 여러 사이트를 제공하고 싶습니다.동일한 서버의 여러 사이트 (하위 도메인)를 서비스하기위한 nginx 구성

각 사이트에 대해 nginx는 포트를 수신하여 앱 서버 (uwsgi)와 통신하고 다른 포트는 프록시 서버로 통신합니다. 각 사이트는 uwsgi 및 플라스크를 사용합니다.

모든 사이트는 동일한 API 끝점 이름을 공유하므로 유일한 차이점은 하위 도메인 이름입니다. 이 같은

뭔가 :

server { 

    listen 8000 default_server; 

    server_name 00.myexample.com; 

    ... 

} 

# Set cache dir 
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m max_size=50m inactive=60m; 
proxy_cache_key "$scheme$request_method$host$request_uri"; 


# Virtualhost/server configuration 
server { 
    listen 80 default_server; 

    server_name 00.myexample.com; 

    location/{ 

     proxy_cache my_zone; 
     include proxy_params; 
     proxy_pass http://00.myexample.com:8000; 
    } 

... 

} 

생각이 여러 사이트를 복제 (00.myexample.com, 01.myexample.com) 나는 다른 포트를 수신 대기 할 필요가 단지 것이다.

server_name이고 충돌을 피하기에 충분한 다른 포트 (예 : 캐시 된 포트)가 있습니까? uwsgi는 각 앱의 다른 포트를 청취해야합니까? (그것은 지금 각 사이트의 폴더에있는 소켓을 통해 nginx와 통신합니다)

여러 대의 하위 도메인을 동일한 컴퓨터로 라우팅하려면 어떤 구성을 사용해야합니까?

답변

0

conf 파일에 server 블록을 여러 개 사용할 수 있으며, 각각 server_name이 다르면 별개로 취급됩니다. 각 하위 도메인의 백엔드가 정확히 동일한 경우 각 server 블록에 대해 proxy_pass에 대해 동일한 값을 사용할 수 있습니다. 그렇지 않으면 각 백엔드에 대해 프로세스를 실행하고 다른 포트에서 수신 대기해야합니다.

+0

동일한 서버를 사용하는 경우 "각 서버 블록에 대해 동일한 값을 proxy_pass에 사용할 수 있습니다." 가치에 의해, 당신은 동일한 포트를 듣고 있다는 것을 의미합니까? 예 : 'server {server_name 00 .. location/{proxy_pass http://00.myexample.com:8000; } ..} #and server {server_name 01 .. location/{proxy_pass http : ///01.myexample.com:8000; } ..}'? 그것은 nginx 캐시와 충돌하지 않을까요? 서버 이름을 동일한 IP 시스템이지만 다른 포트로 라우트 할 수 있습니까? 예 : 00.example.com XX.XXX.XX.XXX:8000, 01.example.com XX.XXX.XX.XXX:7000의 도메인? 어떤 포트가 "일반적으로"무료입니까? – user305883

관련 문제