Điểm:3

Nginx không phải lúc nào cũng phục vụ js và css khi cân bằng tải giữa các vùng chứa docker - hoạt động khi làm mới

lá cờ us

Tôi đã thiết lập Nginx làm cân bằng tải proxy ngược giữa hai vùng chứa docker chạy trên cùng một máy chủ. Khi tải trang lần đầu tiên, trang sẽ tải nhưng tôi gặp rất nhiều lỗi 404 cho tất cả các tệp css và js:

Lỗi 404 khi tải trang

Khi làm mới hoặc mở tab thứ hai, tất cả các lỗi này sẽ biến mất và trang tải tốt. Khi tôi giảm điều này xuống chỉ phục vụ một vùng chứa, nó cũng hoạt động tốt.

Ban đầu, tôi đã nghĩ điều này là do js và css được yêu cầu từ cùng một url gốc và một số khía cạnh của bộ cân bằng tải và bộ chứa đã đưa ra lỗi do một cụm yêu cầu cho một người dùng được cân bằng giữa hai máy chủ. Thông qua một chút thử nghiệm, tôi đã thử sử dụng proxy_set_header Máy chủ lưu trữ $host (đang nhìn đâyđây để biết câu trả lời) - tôi hiểu rằng điều này sẽ gửi các yêu cầu tiếp theo của một người dùng đến cùng một máy chủ ngược dòng. Điều này dường như làm cho sự cố hiếm khi xảy ra hơn nhưng vẫn chưa loại bỏ được hoàn toàn.

Các câu hỏi còn lại của tôi (từ một người học nghiệp dư!):

  • Đây có phải là cách sử dụng đúng proxy_set_headervà do đó có thể phân phối js/css từ cùng một máy chủ ngược dòng cho một người dùng, thay vì cân bằng tải các yêu cầu tương đối nhỏ này trên hai máy chủ không?
  • Đây có phải là gốc rễ của vấn đề không, với vùng chứa thứ hai phải đáp ứng một số yêu cầu được nhắc bằng cách tải trang cho vùng chứa đầu tiên, các phản hồi này bằng cách nào đó không xếp hàng?
  • Cơ sở người dùng của tôi sẽ có 100-200 người dùng đồng thời truy cập vào một url từ xa từ một vị trí. tôi không nghĩ ip_hash sau đó sẽ hoạt động vì tất cả các yêu cầu sẽ đến từ cùng một IP? Có cách nào khác để buộc một người dùng vào một máy chủ hiệu quả hơn không?

Tệp cấu hình nginx của tôi:

phụ trợ ngược dòng {
        less_conn;
        máy chủ cục bộ: 4000;
        máy chủ cục bộ: 4001;
}

người phục vụ {
        nghe 80;
        nghe [::]:80;

        tên máy chủ xxxxxxxxxx;

        địa điểm / {
                proxy_pass http://phụ trợ;
                proxy_redirect http://backend/ $scheme://$host/;
                proxy_http_version 1.1;
                proxy_set_header Nâng cấp $http_upgrade;
                proxy_set_header Máy chủ lưu trữ $host;
                proxy_set_header Kết nối $connection_upgrade;
                proxy_read_timeout 20d;
                tắt proxy_buffering;
        }
}
lá cờ ru
Nhìn vào các bản ghi cho nginx. Có vẻ như 404 không phải là phản hồi nginx mà là phản hồi phụ trợ.
Andy Baxter avatar
lá cờ us
Cám ơn vì cái này. Có vẻ như yêu cầu đang được gửi ngược dòng tốt, nhưng máy chủ bộ chứa docker bị lỗi với phản hồi của nó. Bây giờ tôi đã thử `ip_hash` để thêm độ bền cho mỗi máy chủ và thử nghiệm từ hai IP, tôi nhận được phản hồi hoàn hảo từ cả hai. Có vẻ như khi một thiết bị liên tục gửi truy vấn đến cả hai thì vấn đề sẽ phát sinh.

Đă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.