2017-11-26 5 views
0

danke fürs lesen meiner frage.Nginx Gunicorn ein ip mehrere django sites in ordnern

Ich versuche, mehrere Django-Sites auf ihren eigenen Ordnern in einem Server ohne Domäne (nur IP-Adresse) mit Gunicorn und Nginx zu dienen. Etwas wie das:

20.20.20.20/demos/myapp1/ --> Django app 
20.20.20.20/demos/myapp2/ --> Django app 
20.20.20.20/demos/myapp3/ --> Django app 

Ich habe viele Einstellungen getestet, aber ich kann es nicht funktionieren lassen. Als ich versuchte, URL zu laden 20.20.20.02/demos/myapp1/ i 404 nicht gefunden Fehlermeldung erhalten :(

Beispiel einer Website nginx conf:

upstream app1_server { 
    server unix:/webapps/myapp1/run/gunicorn.sock fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name 20.20.20.20; 

    keepalive_timeout 5; 
    client_max_body_size 4G; 

    location /static/ { 
     alias /webapps/myapp1/static/; 
    } 

    location /media/ { 
     alias /webapps/myapp1/media/; 
    } 

    location /demos/myapp1/ { 
     try_files $uri @proxy_to_app; 
    } 

    location @proxy_to_app { 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app1_server; 
    } 

    # Error pages 
    error_page 500 502 503 504 /500.html; 
    location = /500.html { 
     root /webapps/myapp1/static/; 
    } 
} 

Was mit meiner myapp1.conf Datei falsch ist?

Für das Protokoll, wenn i "Standort/demos/Myapp1 /" auf "Standort /" meine ersten App Werke zu ändern, aber die anderen Anwendungen immer noch nicht funktioniert.

Vielen Dank im Voraus.

Bearbeiten 1:

Überprüfen mein Problem .. Für jetzt habe ich eine Lösung gefunden. Regel neu schreiben:

location /myapp1/ { 
    rewrite ^/myapp1(.*) $1 break; 
    try_files $uri @proxy_to_app; 
} 

Ist eine gute Lösung? Meine Django apps ihre Urls gebrochen :(

Antwort

0

Nun, über Nginx Lesen, löste ich mein Problem in 4 Schritten:.

  1. Mit Rewrite-Regel wie mein bearbeiten Post
  2. Hören Sie jede App in diferent Port , wie folgt aus:

    server { 
        listen 81; 
        server_name 20.20.20.20; 
    
        location /demos/myapp1/ { 
         rewrite ^/demos/myapp1(.*) $1 break; 
         try_files $uri @proxy_to_app; 
        } 
        ... 
    } 
    
    server { 
        listen 82; 
        server_name 20.20.20.20; 
        location /demos/myapp2/ { 
         rewrite ^/demos/myapp2(.*) $1 break; 
         try_files $uri @proxy_to_app; 
        } 
        ... 
    } 
    
    
    server { 
        listen 83; 
        server_name 20.20.20.20; 
        location /demos/myapp3/ { 
         rewrite ^/demos/myapp3(.*) $1 break; 
         try_files $uri @proxy_to_app; 
        } 
        ... 
    } 
    
  3. Reload Nginx

    sudo service nginx restart 
    
  4. Test-it:

    http://20.20.20.20:81/myapp1/ 
    http://20.20.20.20:82/myapp2/ 
    http://20.20.20.20:83/myapp3/ 
    

Wenn Sie eine bessere Art und Weise haben mein Problem zu lösen, lassen Sie es mich wissen!

Verwandte Themen