Nginx: cách đặt tiêu đề máy chủ cho máy chủ được chọn (cân bằng tải)


10

Tôi có một trang web hoạt động như cân bằng tải. Trang web A.

Tôi có các trang web khác chỉ có thể có một tên miền. Vì vậy, nếu tôi chỉ chuyển hướng đến họ, nó nói tên máy chủ không được tìm thấy.

Vì vậy, nếu tôi tự đặt tiêu đề thành một cái gì đó thì chỉ có trang web đó hiển thị.

Làm thế nào tôi có thể thiết lập proxy_set_header Host xxxxđịa chỉ máy chủ được chọn. Bằng cách này, mỗi yêu cầu định tuyến lại sẽ có tiêu đề máy chủ phù hợp và khác nhau.

Sẽ không có vấn đề gì nếu 2 trang web khác của tôi có thể hoạt động dựa trên url và không phải tiêu đề máy chủ.

worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
error_log  logs/error.log  debug;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    upstream myapp1 {
        #server localhost:3333;
        server www.asd.com:80;
    }

    server {
        listen 80;

        location / {
            proxy_set_header Host            $upstream_addr;  // should become somehow www.asd.com right now this code doesn't work
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://myapp1;
        }
    }
}

$server_addrlà bằng cách nào đó 127.0.0.1 tại sao ??
Muhammad Umer

tôi muốn tiêu đề máy chủ là www.asd.com khi máy chủ www.asd.com:80được chọn
Muhammad Umer

hoặc nếu có cách viết if(server1) than host = a; ,if(server2) than host = b;
Muhammad Umer

1
Theo tôi, tiêu đề máy chủ phù hợp phải là bất cứ thứ gì bạn nhận được từ máy khách. Nếu khách hàng yêu cầu www.asd.com, thì đó là tiêu đề của máy chủ. Điều này sẽ giúp tạo chính xác các url tuyệt đối trong phần phụ trợ khi cần thiết, đặt tên miền phù hợp cho cookie, v.v. Dù bạn đang cố gắng làm gì, có lẽ bạn đang nhìn nhầm.
Florin Asăvoaie

cả máy khách và máy chủ trung gian là tôi.
Muhammad Umer

Câu trả lời:


6

Bạn cần đặt tiêu đề cho biến máy chủ đến, như được ghi lại ở đây :

proxy_set_header Host $host;

This variable is equal to line Host in *the header of request* or namecó nghĩa là bất cứ điều gì khách hàng / trình duyệt nói, đó là cái được chọn.
Muhammad Umer

Đây là những gì bạn muốn làm, đúng không? Máy khách yêu cầu tài nguyên / máy chủ ảo từ proxy của bạn và bạn cần cung cấp máy chủ ảo. Máy chủ ảo được phục vụ được chọn bởi khách hàng / borwser.
Jeff Wong

không có máy chủ ảo nào được chọn bởi máy chủ một cách ngẫu nhiên
Muhammad Umer

1
Một cái gì đó như thế này? Tạo hai cấp độ ủy quyền và đặt máy chủ được mã hóa cứng vào điểm cuối trên máy chủ lớp thứ haifault.com/a/622782/287634
Jeff Wong

Tôi sẽ xem, nhưng tôi nghĩ rằng tôi đã thấy vì tôi đã nâng cấp một số thứ ở đó
Muhammad Umer

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.