2013-11-22 15 views
6

Tôi đã tìm kiếm tất cả nhưng chưa tìm thấy một người duy nhất lưu trữ nhiều trang web nút trên cùng một máy chủ mà không sử dụng tên miền phụ. Tôi muốn một cái gì đó như sau ...Thiết lập nhiều máy chủ nút sử dụng Nginx mà không có tên miền phụ

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

Tôi thậm chí còn cố gắng viết lại yêu cầu; tuy nhiên, điều đó dường như không có bất kỳ ảnh hưởng nào. Nếu tôi xóa/app1 nó hoạt động chính xác. Gần nhất tôi đã nhận được chuyển tiếp đến nhiều trang web nhưng sau đó các tuyến đường tốc hành địa phương không hợp lệ.

Trả lời

1

tôi đã thiết lập làm việc như sau:

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

sự vấn đề với bạn cấu hình của nó rằng bạn đang mixin thường xuyên ứng dụng http proxying với proxy ứng dụng websockets. Không cần sử dụng viết lại. Dưới đây là cấu hình đơn giản nhất tôi có thể đưa ra:

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

tôi khuyên bạn nên Redding các WebSockets tài liệu liên quan trên trang web nginx: http://nginx.org/en/docs/http/websocket.html

Các vấn đề liên quan