Điểm:0

nginx proxy_pass của các tên miền phụ khác nhau đến các vị trí khác nhau trong một khối máy chủ

lá cờ br
aag

Cách thông thường để ủy quyền ngược các tên miền phụ khác nhau đến những nơi khác nhau với Nginx là cài đặt một máy chủ duy nhất cho mỗi tên miền phụ, như sau:

người phục vụ {
    server_name subdomain1.example.com;
    địa điểm / {
        proxy_pass http://hostname1:port1;
    }
}
người phục vụ {
    server_name subdomain2.example.com;
    địa điểm / {
        proxy_pass http://hostname2:port2;
    }
}

Có thể đạt được kết quả tương tự trong một khối máy chủ (ví dụ: server_name .example.com, không có bất kỳ tên miền phụ được chỉ định nào), bằng cách chỉ định các vị trí khác nhau trong khối máy chủ đó không?

Điểm:1
lá cờ jp

Nếu bạn chỉ định các vị trí khác nhau thì kết quả sẽ không giống nhau vì bạn có cùng địa điểm / trong hai người phục vụ khối.

aag avatar
lá cờ br
aag
Cảm ơn bạn đã dành thời gian trả lời. Tôi có thể đã thể hiện bản thân mình một cách mơ hồ.Mục tiêu là để đảo ngược proxy các tên miền phụ khác nhau, mỗi tên miền trong số đó sẽ được phục vụ bởi một máy chủ nội bộ khác nhau. Thay vì cài đặt một số máy chủ nginx riêng lẻ, khiến cấu hình trở nên khó sử dụng, tôi đã tự hỏi liệu mình có thể chỉ định một "máy chủ ký tự đại diện" duy nhất mà sau đó sẽ chuyển các yêu cầu đến đúng máy chủ nội bộ tùy thuộc vào tên miền phụ được yêu cầu hay không.
lá cờ jp
Bạn có thể sử dụng một biến làm tham số `proxy_pass` Xem https://stackoverflow.com/questions/5743609/dynamic-proxy-pass-to-var-with-nginx-1-0
aag avatar
lá cờ br
aag
Bây giờ tôi đã sử dụng một biến, nhưng hóa ra sau đó tôi cần phải khai báo rõ ràng một quy tắc viết lại. Tôi vẫn chưa tìm ra cách để làm điều đó một cách chính xác.
Điểm:1
lá cờ us

Vâng, nó là có thể.

Đầu tiên, thiết lập một bản đồ để ánh xạ các miền vào proxy_pass điểm đến:

bản đồ $host $dest {
    www1.example.com 192.168.10.10:8001;
    www2.example.com 192.168.10.11:8002;
    mặc định 192.168.10.12;
}

người phục vụ {
    tên_máy chủ *.example.com;

    proxy_pass http://$dest;
}

Khi nginx nhận được một yêu cầu, nó sẽ chuyển đến proxy_pass chỉ thị. Sau đó, nó giải quyết $dest sử dụng bản đồ, ánh xạ các tên máy chủ ảo khác nhau tới các đích. Sau đó, nginx ủy quyền yêu cầu bằng cách sử dụng đích đã giải quyết.

Hãy nhớ thiết lập đúng điểm đến mặc định. Mọi máy chủ web công cộng đều nhận được yêu cầu cho tất cả các loại tên miền. Thông thường, bạn muốn trả về lỗi 404 trên các máy chủ ảo không xác định.

aag avatar
lá cờ br
aag
cập nhật. Có vẻ như proxy_pass cho một biến yêu cầu quy tắc viết lại rõ ràng. Mình đang nghịch mấy cái luật như vậy mà chưa hình dung ra.
lá cờ us
Bạn đã thử chỉ sử dụng URL đích khác trong `bản đồ` chưa? `icinga.example.com 10.10.10.7/icingaweb2` làm dòng `map`? Ngoài ra, bạn cần thiết lập đúng URL cơ sở trong từng cấu hình ứng dụng.
aag avatar
lá cờ br
aag
nếu `icinga.example.com` được ánh xạ tới `10.10.10.7/icingaweb2`, ứng dụng khách sẽ được chuyển đến trang không tồn tại `https://icinga.example.com/icingaweb2/authentication/login`
aag avatar
lá cờ br
aag
Kính gửi @tero, tôi phải quay lại vấn đề này. Giải pháp của bạn hoạt động đối với chuyển khoản 1:1 đơn giản. Tuy nhiên, v.d. `https://icinga.example.com` phải là proxy_passed tới `http://10.10.10.7/icingaweb2`, trong khi `https://mail.example.com` nên tới `http://10.10.10.9 /iredmail/mail`, v.v. Tôi dường như hiểu rằng tôi cần xác định các khối vị trí, nhưng những khối đó sẽ không hoạt động với tên miền phụ. Bạn có thêm lời khuyên?
lá cờ us
Bạn có chắc là bạn đã đặt chính xác URL gốc của ứng dụng `icinga` không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.