Kích thước của trường tiêu đề yêu cầu vượt quá giới hạn máy chủ do nhiều giá trị If-none-Match


8

Đây là một trường hợp thú vị của một khách hàng gặp phải lỗi "400 Yêu cầu Không hợp lệ" và dường như không thể xem trang chủ drupal được lưu trữ trên Ubuntu 12.04.3 LTS bằng Apache / 2.2.22:

Yêu cầu xấu
Trình duyệt của bạn đã gửi một yêu cầu mà máy chủ này không thể hiểu được.
Kích thước của một lĩnh vực yêu cầu tiêu đề vượt quá giới hạn máy chủ.

Gói đầu ra đánh hơi:

...
T 2013/09/02 15:23:10.458167 ###.###.###.###:40027 -> ###.###.###.###:80 [A]
GET / HTTP/1.0.
If-None-Match: "1363160742-0", "1363165573-1", "1363175854-1", "1363175854-0", "1363179616-0", "1363181811-0", "1363239319-1", "1363255903-0", "1363259282-0", "1363263398-1", "1363274564-0", "1363329642-0", "1363332613-1", "1363333851-0", "1363599826-0", "1363678909-0", "1363684227-1", "1363699732-0", "1363755181-0", "1363765691-1", "1363767178-0", "1363780208-0", "1363787589-0", "1363795259-1", "1363852409-1", "1363863225-1", "1363928115-0", "1363951793-0", "1363951793-1", "1364133610-1", "1364187608-1", "1364187608-0", "1364203083-0", "1364208174-0", "1364214930-0", "1364219815-0", "1364274441-1", "1364280930-0", "1364280930-1", "1364286055-1", "1364298840-0", "1364298840-1", "1364360674-0", "1364364356-1", "1364381508-0", "1364385520-1", "1364460734-0", "1364882595-1", "1364903271-0", "1364967946-0", "1364967946-1", "1364981713-0", "1364985142-1", "1364992835-1", "1365061578-0", "1365065290-1", "1365076128-0", "1365141088-1", "1365167701-0", "1365171024-0", "1365402404-1", "1365402404-0", "1365411731-1", "1365416882-0", "1365476715-0", "1365487578-0", "1365488880-1", "1365503922-1", "1365514224-1", "1365579101-0", "1365580320-0", "1365582817-0", "1365584926-0", "1365589524-0", "1365608307-0", "1365649987-0", "1365682295-0", "1365685083-0", "1365770532-1", "1365770532-0", "1365844566-0", "1365996619-1", "1366093719-1", "1366093719-0", "1366115408-0", "1366180275-1", "1366186431-0", "1366196476-0", "13662669
...

Ở giai đoạn này, tôi không chắc chắn 100% liệu nó chỉ giới hạn ở một máy khách cụ thể nhưng lỗi đã được báo cáo bởi người dùng có chuỗi tác nhân người dùng sau:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/534.57.7 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.7

Bây giờ câu hỏi vẫn là phải làm gì, đó là một vấn đề máy chủ hay chỉ là một khách hàng làm sai?


Đây không phải là một câu hỏi Ubuntu. Hãy xem nhật ký của Apache và sử dụng nó để tìm kiếm sự giúp đỡ trong cộng đồng chuyên ngành.
Luís de Sousa

Tôi nghĩ rằng đó có thể là một vấn đề mặc định của Ubuntu.
inetpro

1
Chúng tôi đang nói về một máy chủ web chạy trên Ubuntu - vì vậy nó không phải là chủ đề ngoài luồng. Như @ LuísdeSousa đề xuất, hãy nhìn vào /var/log/apache2/error.log, để tìm giới hạn nào đã bị vi phạm.
guntbert

@ LuísdeSousa Chúng tôi hỗ trợ tất cả các phần của Ubuntu Server tại đây. Tại sao đây không phải là một câu hỏi Ubuntu?
Eliah Kagan

@guntbert phần thú vị là cả yêu cầu không phải lỗi thực tế đều không được ghi vào nhật ký apache. Nó được đăng nhập vào proxy ngược mực và tôi đoán rằng proxy thực sự là nguyên nhân
inetpro

Câu trả lời:


11

Bạn đã tìm thấy vấn đề. Một số tác nhân người dùng và một số yêu cầu trở nên quá lớn đối với các mặc định của máy chủ web. Nó có vẻ như là một vấn đề ngớ ngẩn để chạy vào nhưng nó cứ xảy ra với tôi nginx. Thông thường khi có những tên cookie và tải lên ngớ ngẩn đang diễn ra ... Dù sao ...

Giải pháp là chỉ cần tăng giới hạn yêu cầu. Bạn có thể làm điều này trên toàn cầu hoặc chỉ cho trang web của bạn với các LimitRequestFieldSizechỉ thị :

LimitRequestFieldSize 32768

Đó là giới hạn 32KB (tăng từ mức mặc định 8KB).


Đó là những gì tôi đã nghĩ nhưng tôi không chắc về kích thước được đề xuất. Cảm ơn!
inetpro

1
Tăng LimitRequestFieldSizelên để 32768không giúp đỡ.
inetpro

@inetpro Bạn đã khởi động lại Apache? Và nó ở một bối cảnh đủ cao? Điều này sẽ không hoạt động trong một tập tin .htaccess.
Oli

1
Bạn đã đặt mục nhập trong tên máy chủ ảo dựa trên tên đầu tiên được xác định hoặc trong một tên khác? Các tài liệu cho biết: "Khi tên dựa trên lưu trữ ảo được sử dụng, giá trị cho chỉ thị này được lấy từ mặc định (đầu tiên niêm yết) máy chủ ảo cho NameVirtualHost kết nối bị ánh xạ tới.". Có vẻ như bạn tốt hơn nên làm điều này trong cấu hình toàn cầu. Vấn đề với việc thực hiện nó trong một máy chủ ảo là chính tiêu đề yêu cầu chứa tên của máy chủ ảo được yêu cầu.
Robie Basak

2
LimitRequestFieldSize 65536LimitRequestLine 65536LimitXMLRequestBody 0⓸ ??? ⓹ℙℛṎℱỈ
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.