2012-11-05 34 views
30

Đây là trường hợp của tôi: Tôi sẽ có một máy chủ giao diện người dùng chạy nginx và nhiều máy chủ phụ trợ chạy apache + hành khách với các ứng dụng đường ray khác nhau. Tôi KHÔNG cố gắng làm bất kỳ cân bằng tải nào. Những gì tôi cần làm là thiết lập nginx để kết nối proxy đến các máy chủ cụ thể dựa trên url. IE, client.domain.com nên trỏ đến xxx100: 80, client2.domain.com phải trỏ đến xxx101: 80, v.v.nginx reverse proxy nhiều backends

Tôi không quen với nginx, nhưng tôi không thể tìm thấy cấu hình cụ thể trực tuyến phù hợp với tình hình của tôi.

Cảm ơn.

+0

hey là bạn có thể tìm thấy một giải pháp cho việc này? trong trường hợp của tôi, tôi muốn cùng một máy khách truy cập vào nhiều máy chủ phụ trợ này, bạn có thể giúp tôi tìm một cấu hình cho nó không? – Vinodborole

Trả lời

31

bạn có thể phù hợp với url khác nhau với khối máy chủ sau đó bên trong mỗi khối máy chủ bạn muốn có cài đặt proxy ngược

server { 
    server_name client.domain.com; 

    # app1 reverse proxy follow 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://x.x.x.100:80; 

} 

server { 
    server_name client2.domain.com; 

    # app2 reverse proxy settings follow 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://x.x.x.100:80; 
} 

rõ ràng thêm các thiết lập nginx hơn nữa (như error_page, access_log ...) như mong muốn trong mỗi số server -block

+0

Hoàn hảo. Cảm ơn! –

+2

Có thể cấu hình mỗi máy chủ gốc để được ủy nhiệm dựa trên đường dẫn chứ không phải chỉ đến máy chủ/quyền truy cập không? I E. '/ system1 /' được ủy quyền thành 'http: // x.x.x.100 /' trong khi '/ system2 /' được ủy quyền thành 'http: // x.x.x.120 /'? –

+1

chắc chắn, trong trường hợp đó bạn chỉ cần đặt các chỉ thị proxy vào một khối vị trí thích hợp, thay vì trong khối máy chủ chính – cobaco

14

nhận xét của @ mohamnag là đúng. proxy_pass chỉ được phép vào bên trong một Xem location

:

http://wiki.nginx.org/HttpProxyModule#proxy_pass

https://www.nginx.com/resources/admin-guide/reverse-proxy/

Vì vậy, cấu hình đúng sẽ là

server { 
    server_name client.domain.com; 

    location/{ 
    # app1 reverse proxy follow 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://x.x.x.100:80; 
    } 
} 

server { 
    server_name client2.domain.com; 

    location/{ 
    # app2 reverse proxy settings follow 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://x.x.x.100:80; 
    } 
} 
Các vấn đề liên quan