2017-06-19 9 views
0

J'ai deux sites Web sur un seul serveur ubuntu 16 et je veux les rendre accessibles par réseau à l'aide nginxreverse proxy et gunicorn (gunicorn sert en interne sur les sites 127.0.0.1:8000 et 127.0.0.1:8001).Nginx proxy inverse sans DNS pour plusieurs sites Web

Les deux sites seront jamais ont DNS pointant sur mon serveur et les deux doivent être en cours d'exécution sous le port 80. Donc, la question est, comment puis-je définir proxy inverse pour ces sites? Je suis dans une situation où je ne peux pas attraper le nom d'hôte ou le port différent afin que l'utilisateur puisse entrer dans un site spécifique.

Mon first_website.conf:

upstream first_website { 
    server unix:/var/www/first_website/first_website_env/run/gunicorn.sock 
    fail_timeout=0; 
} 

server { 

    listen 80; 

    # normally I would use different host name 
    # to check, which site user wants to retrieve. 
    server_name 123.12.34.789; 

    client_max_body_size 4G; 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    location/{ 
     proxy_pass http://127.0.0.1:8001; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 

     if (!-f $request_filename) { 
      proxy_pass http://127.0.0.1:8001; 
      break; 
     } 
    } 
} 
+1

Comment envisagez-vous de différencier les serveurs alors? Voulez-vous qu'ils aient des points d'entrée différents? par exemple '123.12.34.789/server1'? –

+0

Oui 123.12.34.789/serveur1 serait une bonne option. Mais je ne suis pas sûr de savoir comment l'appliquer, et si c'est une bonne pratique à faire. – Fusion

Répondre

0

une option serait de placer les serveurs sur différents sites d'URL par exemple:

upstream first_website { 
    server unix:/var/www/first_website/first_website_env/run/gunicorn.sock 
    fail_timeout=0; 
} 

server { 

    listen 80; 

    server_name 123.12.34.789; 

    client_max_body_size 4G; 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    location /server1/ { 
     proxy_pass http://127.0.0.1:8000; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 

     if (!-f $request_filename) { 
      proxy_pass http://127.0.0.1:8000; 
      break; 
     } 
    } 

    location /server2/ { 
     proxy_pass http://127.0.0.1:8001; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 

     if (!-f $request_filename) { 
      proxy_pass http://127.0.0.1:8001; 
      break; 
     } 
    } 
} 

Je crois que le tour est joué pour vous.