2017-01-07 5 views
0

Ich würde gerne mehrere Websites von der gleichen Maschine bedienen.Nginx-Konfiguration für mehrere Sites (Sub-Domains) von demselben Server

Für jede Website verwende ich nginx einen Port zum Kommunizieren mit App-Server (uwsgi) und einen anderen Port als Proxy-Server. Jede Website verwendet uwsgi und Kolben.

Alle Websites haben dieselben API-Endpunktnamen. Der einzige Unterschied ist der Name der Subdomäne.

Etwas wie folgt aus:

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; 
    } 

... 

} 

Ich dachte, mehrere Standorte zu replizieren (00.myexample.com, 01.myexample.com) würde ich brauche nur zu verschiedenen Häfen machen zu hören.

Sind server_name und eine andere Ports ausreichend, um Konflikte zu vermeiden (z. B. im Cache)? Sollte auch uwsgi verschiedene Ports für jede App anhören? (es kommuniziert jetzt mit Nginx über Socket im Ordner von jedem Standort)

Welche Konfiguration würden Sie tun, um mehrere Subdomains zu einer gleichen Maschine zu routen?

Antwort

0

Sie können mehrere server Blöcke in Ihrer Conf-Datei verwenden, und solange die server_name in jedem einzelnen unterschiedlich ist, werden sie eindeutig behandelt. Wenn das Back-End für jede Subdomäne genau gleich ist, können Sie den gleichen Wert für proxy_pass für jeden server-Block verwenden. Andernfalls müssten Sie für jedes Back-End einen Prozess ausführen und ihn an einem anderen Port abhören lassen.

+0

Wenn Sie denselben Server verwenden, können Sie "denselben Wert für proxy_pass für jeden Serverblock verwenden". Wert meinst du den gleichen Port zu hören? z.B. 'Server {Servername 00 .. Standort/{Proxy_Pass http://00.meinBeispiel.com:8000; } ..} #und Server {Servername 01 .. location/{proxy_pass http://01.meinbeispiel.com:8000; } ..} '? Wird es nicht mit dem Nginx-Cache kollidieren? Kann ich Servernamen an dieselbe IP-Maschine, aber an verschiedene Ports weiterleiten? z.B. 00.example.com Eine Domain auf XX.XXX.XX.XXX:8000, 01.example.com XX.XXX.XX.XXX:7000? Welcher Port ist "generell" frei? – user305883

Verwandte Themen