Dưới đây là các vấn đề:Nginx Proxy configuration pass Docker
Các máy chủ có nhiều ứng dụng Docker chạy trên các cổng khác nhau cho ví dụ. App1 @ 3001, App2 @ 3002 ... 3100 vv
Bây giờ tôi muốn truy cập các ứng dụng trong định dạng này http://hostname.com/app1, http://hostname.com/app2 ..
Để làm điều này tôi đang chạy nginx trên host để yêu cầu proxy sang đúng cổng dựa trên tiểu uri
location = /app1 {
proxy_redirect http://hostname:3001/;
include /etc/nginx/proxy_params;
}
location ^~ /app1 {
proxy_redirect http://hostname:3001/app1;
include /etc/nginx/proxy_params;
}
Nhưng điều này không hoạt động khi trang web phụ thay đổi hoặc nếu trang web chuyển hướng. Ví dụ:
If I visit the site at hostname:3001 -> I can see the site
If I visit the site at http://hostname.com/app1 -> I can see the site
If the site page is at hostname:3001/static/index.html then when i access it as http://hostname.com/app1 the page changes to http://hostname.com/static/index.html -> I get 404.
Có cách nào để thực hiện việc này không? Hoặc là cách duy nhất để làm điều đó là đặt dns là app1.hostname.com và thực hiện định tuyến dựa trên tên?
vấn đề của bạn không liên quan đến Docker hoặc Nginx. Đó là một vấn đề chung của proxy ngược với đường dẫn ứng dụng đã thay đổi: ứng dụng của bạn mong đợi nó đang phục vụ tại '/' trong khi proxy ngược lại phục vụ nó tại '/ app1'. Tôi chắc chắn bạn có thể tìm thấy mô tả sự cố và cách giải quyết dễ dàng. –
Yup Tôi đã hỏi từ lâu rồi. Tôi đã sửa lỗi này bằng cách tạo bản ghi dns cho máy chủ nơi chứa đang chạy và ánh xạ cổng container tới cổng chủ và sau đó thêm cấu hình đơn giản vào nginx map app1.abc.com để lưu trữ: cổng trong proxy pass. Nó đã hoạt động tốt và dễ dàng mở rộng. – NitishMD