2013-11-22 9 views
6

Szukałem od zera, ale nie znalazłem ani jednej osoby obsługującej witryny z wieloma węzłami na tym samym serwerze bez korzystania z subdomen. Chcę coś jak następuje ...Konfigurowanie serwerów z wieloma węzłami przy użyciu Nginx bez subdomen

website.com/app1 -> 127.0.0.1:3000
website.com/app2 -> 127.0.0.1:9000

upstream node { 
    server 127.0.0.1:3000; 
    keepalive 64; 
} 

server { 
    listen 80; 
    server_name webaddress.com; 

    root /var/www/trucks/; 

    location /livereload { 

     proxy_pass http://localhost:35729; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "Upgrade"; 
    } 

    location /app1 { 
     rewrite ^/app1/?(.*) /$1 break; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://127.0.0.1:3000; 
     root /var/www/trucks; 
} 

Mam nawet próbował przepisanie żądania; jednakże wydaje się, że nie ma to żadnego wpływu. Jeśli usunę/app1 działa poprawnie. Najbliższe, które dostałem, jest przekazywanie do wielu stron, ale wtedy lokalne trasy ekspresowe są nieprawidłowe.

Odpowiedz

1

Mam Instalator pracuje w następujący sposób:

server { 
    listen 8080; 
    server_name localhost; 
    location/{ 
    proxy_pass http://localhost:3000; 
    proxy_set_header Host $host; 
    } 
    location /api { 
    proxy_pass http://localhost:3001; 
    rewrite ^/api(.*) /$1 break; 
    proxy_set_header Host $host; 
    } 
} 
0

się problem z twoim Konfiguracja polega na tym, że mieszasz regularne proxy aplikacji HTTP z proxy serwera aplikacji websockets. Nie ma potrzeby używania przepisywania. Oto najprostsza konfiguracja mogę wymyślić:

server { 
    listen 80; 
    index index.html index.htm; 

    server_name _; 

    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header Host $host; 

    location /node1 { 
     proxy_pass http://localhost:8888; 
    } 
    location /node2 { 
     proxy_pass http://localhost:9999; 
    } 
} 

polecam Redding z WebSockets związanych z dokumentacją na stronie nginx: http://nginx.org/en/docs/http/websocket.html

Powiązane problemy