Điều đầu tiên cần lưu ý là các trình duyệt web hiện đại có thể không phải là công cụ tốt nhất để gỡ lỗi các sự cố như thế này. Trình duyệt thậm chí có thể là nguyên nhân của chúng vì máy chủ có thể được định cấu hình hoàn toàn chính xác và sự cố có thể là 100% từ phía máy khách.
nội dung:
- thử nghiệm (với
Xoăn
và trình duyệt ẩn danh/ẩn danh)
- cả hai bài kiểm tra đều hiển thị nội dung mong đợi
Xoăn
có, nhưng cửa sổ trình duyệt riêng tư không hiển thị đúng nội dung
- cả bài kiểm tra đều không hiển thị nội dung mong đợi
thử nghiệm
Cố gắng không chỉ kiểm tra với FQDN http://sub.example.com
nhưng sử dụng một URL đầy đủ hơn như http://sub.example.com/some-page.html
. Khi bạn biết rằng bạn đang sử dụng proxy, việc thêm các tham số bổ sung thường sẽ bỏ qua các nội dung được lưu trong bộ nhớ cache, tức là thêm và tăng một bộ đếm, chẳng hạn như http://sub.example.com/some-page.html?test=3
kiểm tra từ cửa sổ trình duyệt "Riêng tư/Ẩn danh".
Điều đó làm giảm tỷ lệ rút ra kết luận không chính xác dựa trên các đối tượng được lưu trong bộ nhớ cache.
kiểm tra từ một dòng lệnh (trên máy chủ thử nghiệm) chẳng hạn cuộn tròn -vv http://sub.example.com/some-page.html
hoặc dùng điện thoại
và mô phỏng một yêu cầu web với
telnet sub.example.com 80
NHẬN /some-page.html HTTP/1.1
Máy chủ: sub.example.com
Những điều cần tìm trong Xoăn
đầu ra:
Cài đặt proxy chắc chắn là một dấu hiệu nguy hiểm và trở ngại thực sự khi gỡ lỗi sự cố máy chủ. Máy chủ proxy có thể lưu trữ (bản ghi DNS và nội dung web), hạn chế quyền truy cập của bạn và thậm chí thay thế chứng chỉ TLS.
cuộn tròn -vv http://sub.example.com/some-page.html
* Sử dụng biến proxy env no_proxy == 'localhost,127.0.0.1,.corp.example.net'
* Sử dụng biến proxy env http_proxy == 'http://[user]:[pass]@proxy.corp.example.net:8080/'
* Đang thử 10.2.0.80:8080...
^^^ Nguy hiểm - Máy chủ proxy
Kiểm tra từ hệ thống (kiểm tra) không dựa vào máy chủ proxy nếu bạn muốn kiểm tra đúng cấu hình của máy chủ web internet. Tôi thường không có các hệ thống thử nghiệm hỗ trợ trình duyệt chính thức, nhưng tôi thường có thể quản lý một hệ thống sẽ chạy các lệnh cuộn tròn từ một dòng lệnh.
cuộn tròn -vv http://sub.example.com/some-page.html
* Sắp kết nối() với cổng sub.example.com 80 (#0)
* Đang thử 192.168.2.119...
* Đã kết nối với sub.example.com (192.168.2.119) cổng 80 (#0)
^^^ KIỂM TRA đây có phải là địa chỉ IP chính xác không
của máy chủ web của bạn?
> NHẬN /some-page.html HTTP/1.1
> Tác nhân người dùng: curl/7.29.0
> Máy chủ: sub.example.com
> Chấp nhận: */*
Ở đó, bạn quan sát thấy rằng một kết nối được thiết lập thành công với đúng địa chỉ IP và cổng của máy chủ web. Các > điểm đánh dấu trước các tiêu đề yêu cầu được thực hiện bởi curl.
Các tiêu đề phản hồi của máy chủ được đánh dấu bằng một < điểm đánh dấu và sau một dòng trống, nội dung phản hồi được gửi bởi máy chủ:
< HTTP/1.1 302 Đã tìm thấy
| ^^^ Mã phản hồi HTTP STATUS của máy chủ
`^^ phiên bản giao thức HTTP
< Ngày: Thứ Hai, ngày 07 tháng 2 năm 2022 13:58:11 GMT
< Máy chủ: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
< Vị trí: https://sub.example.com/some-page.html
< Độ dài nội dung: 216
< Loại nội dung: văn bản/html; bộ ký tự = iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
...
Sau tiêu đề giao thức đầu tiên HTTP/1.1
đến Mã trạng thái HTTP máy chủ tạo ra. có một 2xx
phản ứng có nghĩa là một số hình thức thành công, 3xx
phản hồi là chuyển hướng (xem tại đây), 4xx
và 5xx
là lỗi.
Trong số các tiêu đề khác, máy chủ sẽ gửi Địa điểm:
trong ví dụ này cho biết mục tiêu của phản hồi chuyển hướng.
cả hai bài kiểm tra đều hiển thị nội dung mong đợi
Phần kết luận: Máy chủ web được định cấu hình chính xác và sự cố liên quan đến trình duyệt.
khả năng cao nhất nguyên nhân: có thể đã có một chuyển hướng vĩnh viễn được định cấu hình trước khi cấu hình máy chủ web bị thay đổi và chuyển hướng vĩnh viễn (301) được trình duyệt lưu vào bộ đệm. Khá phổ biến là các chuyển hướng bị hỏng được lưu trong bộ nhớ cache hoặc các chuyển hướng được lưu trong bộ nhớ cache tới https và không có chứng chỉ cũng như trang web https cho sub.example.com
được cấu hình chưa.
Nghị quyết 1: Xóa bộ nhớ cache của trình duyệt và trang web sẽ tải như mong đợi.
Nghị quyết 2: Nhận chứng chỉ SSL cho sub.example.com và bật TLS.
Nguyên nhân 2: Nguyên nhân gốc rễ không hoàn toàn giống nhau, nhưng nguyên nhân và kết quả thực sự tương tự với một chuyển hướng được lưu trong bộ nhớ cache tới https, một Bảo mật vận chuyển nghiêm ngặt HTTP (HSTS) chính sách được thiết lập bởi ví dụ.com
tên miền cũng có thể áp dụng cho tất cả các tên miền phụ (mới) của example.com. Bất kỳ trình duyệt hiện đại hợp lý nào cũng lưu trữ và tôn trọng các chính sách HSTS và sẽ từ chối kết nối qua http đơn giản đến cổng 80 và sẽ âm thầm viết lại http://sub.example.com
URL tới https://sub.example.com
và cố gắng kết nối với cổng 443 bằng TLS.
Nghị quyết: lấy chứng chỉ SSL cho sub.example.com và bật TLS.
Việc xóa bộ nhớ cache của trình duyệt HSTS có thể hoạt động tạm thời nhưng điều đó chỉ hiệu quả khi bạn cũng xóa chính sách HSTS bao gồm tên miền phụ khỏi example.com, điều này không được khuyến khích.
Xoăn
có, nhưng cửa sổ trình duyệt riêng tư không hiển thị đúng nội dung
Phần kết luận: Máy chủ web được định cấu hình chính xác và sự cố liên quan đến trình duyệt hoặc ứng dụng khách.
Nguyên nhân 1: Không hoàn toàn cùng một nguyên nhân gốc rễ, nhưng nguyên nhân và kết quả tương tự một cách hiệu quả với một bộ nhớ cache Bảo mật vận chuyển nghiêm ngặt HTTP (HSTS) chính sách là một tên miền trên danh sách tải trước HSTS. Tuy nhiên, khi các chính sách HSTS được lưu trong bộ nhớ cache không được áp dụng trong cửa sổ "Riêng tư/Ẩn danh", thì danh sách tải trước HSTS phải luôn được áp dụng, ngay cả trong cửa sổ riêng tư/ẩn danh.
Xem phần Hỏi & Đáp này để biết tổng quan về cách xác định xem miền hoặc TLD của bạn có nằm trong danh sách tải trước HSTS hay không:
Danh sách các miền cấp cao nhất (TLD) yêu cầu kết nối HTTPS, như .dev
Nghị quyết: lấy chứng chỉ SSL cho sub.example.com và bật TLS.
Nguyên nhân 2: mặc dù các bản ghi DNS được định cấu hình chính xác, trình phân giải máy khách, màn hình nơi trình duyệt của bạn chạy, có thể trỏ đến một địa chỉ IP khác. Kiểm tra với ví dụ nslookup
và đào
những gì máy chủ tên khách hàng giải quyết và đừng quên rằng một tập tin máy chủ mục cho sub.example.com sẽ ghi đè DNS.
Nghị quyết: gỡ bỏ tập tin máy chủ mục nhập cho sub.example.com hoặc điều tra thêm về sự khác biệt DNS.
cả bài kiểm tra đều không hiển thị nội dung mong đợi
Phần kết luận: Vấn đề là phía máy chủ, không phải phía máy khách.
Không phản hồi
tham khảo Điều gì gây ra thông báo 'Kết nối bị từ chối'? khi có vẻ như máy chủ web hoàn toàn không phản hồi trên cổng 80.
Chuyển hướng phản hồi
Khi máy chủ web phản hồi, hãy xem kỹ phản hồi đó:
< HTTP/1.1 302 Đã tìm thấy
< Ngày: Thứ Hai, ngày 07 tháng 2 năm 2022 13:58:11 GMT
< Máy chủ: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
< Vị trí: https://sub.example.com/some-page.html
< Độ dài nội dung: 216
< Loại nội dung: văn bản/html; bộ ký tự = iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
...
Đây là một phản hồi khá điển hình cho một máy chủ web được định cấu hình để chuyển hướng HTTP đơn giản sang HTTPS.
Các 302 tìm thấy
mã trạng thái trong tiêu đề đầu tiên là dấu hiệu chuyển hướng tạm thời. Đối với một chuyển hướng vĩnh viễn đó sẽ là một 301 Di chuyển vĩnh viễn
tiêu đề trạng thái http.
Các Địa điểm:
tiêu đề hiển thị nơi máy khách được chuyển hướng đến.
Nguyên nhân: khi không được xác định trong cấu hình máy chủ web thì đó là rất phổ biến đối với các ứng dụng web để tạo chuyển hướng sang https hoặc một tên miền khác hoàn toàn.
Trên các máy chủ web Apache (cho phép chúng), một .htaccess
tệp cũng có thể là nguồn của chuyển hướng.
Nghị quyết: điều chỉnh hoặc xóa chuyển hướng hoặc đảm bảo rằng chuyển hướng trở nên hợp lệ và có điều gì đó phản hồi trên mục tiêu của chuyển hướng.
Thường xuyên: nhận chứng chỉ SSL đó và bật TLS!
Nguyên nhân: thường thì mục tiêu của chuyển hướng bị hỏng, hãy kiểm tra lỗi đánh máy tinh vi ở đó, tôi đã thấy thiếu /
's để chuyển hướng đến sub.example.comsome-page.html
và các tham số được sử dụng không chính xác chuyển hướng đến http://some-page.html
, hoặc http://wwww.example.com/http://sub.example.com/some-page.html
và tương tự.
Đồng thời kiểm tra các vòng lặp bằng cách yêu cầu Địa điểm:
nhiều cấp độ chuyển hướng thường chỉ ra một cấu hình bị hỏng và loại bỏ vòng lặp.
Nội dung từ trang web khác
Khi bạn thấy nội dung từ một trang web khác mà bạn lưu trữ chứ không phải nội dung cho sub.example.com
lưu ý rằng hầu hết các máy chủ web sẽ hiển thị nội dung từ một trang mặc định khi chúng không thể khớp tên máy chủ với một trang cụ thể.
Nghị quyết: Kiểm tra lại cấu hình của bạn để tìm lỗi đánh máy và xác nhận rằng máy chủ web đã được khởi động lại với cấu hình được cập nhật.