Mặc dù mọi người đang chỉ ra các dịch vụ cụ thể (ví dụ: "Dịch vụ đại lý triển khai web"), nhưng điều này không giải quyết được nguyên nhân gốc. Nếu bạn chỉ vô hiệu hóa các dịch vụ gây ra sự cố, rất có thể nó sẽ quay đầu lại trong tương lai theo một chiêu bài khác. Vì vậy, đáng để hiểu những gì đang xảy ra, bởi vì điều đó dẫn đến một sửa chữa tốt hơn.
Vấn đề này phát sinh khi một máy chủ ứng dụng muốn kiểm soát toàn bộ cổng 80. Điều này mâu thuẫn với một tính năng của Windows được thiết kế để cho phép nhiều quy trình xử lý các yêu cầu trên cổng 80. Hoàn toàn có thể có bất kỳ số lượng quy trình nào nhận được yêu cầu HTTP trên cổng 80, vì Windows có cơ chế gửi HTTP tích hợp. Mỗi quy trình có thể cho Windows biết URL nào nó muốn xử lý.
Tuy nhiên, nếu một máy chủ ứng dụng hoàn toàn bỏ qua điều này, thì bạn sẽ quay lại thế giới ổ cắm trường học kém linh hoạt hơn, nơi chỉ có một quy trình có thể nhận được yêu cầu dành cho bất kỳ cổng cụ thể nào.
Điều đó có thể ổn - nếu bạn thực sự không muốn bất cứ điều gì ngoài quy trình xử lý yêu cầu HTTP cụ thể trên cổng 80, thì có thể chấp nhận sử dụng máy chủ ứng dụng không hỗ trợ các cơ chế linh hoạt hơn do Windows cung cấp. (Và một số máy chủ ứng dụng phổ biến có giới hạn này. Ví dụ: AFAIK, Tomcat không có khả năng chơi tốt với người khác và khăng khăng đòi có cổng 80 cho riêng mình. Vì vậy, nếu bạn đang sử dụng máy chủ ứng dụng của người khác, điều đó có thể không thực tế thích ứng với nó để sử dụng cơ chế ưa thích.)
Windows cố gắng đáp ứng các dịch vụ không linh hoạt như vậy bằng cách không ràng buộc cơ chế điều phối của nó với cổng 80 cho đến khi có điều gì đó chủ động yêu cầu điều đó. (Đây là lý do tại sao ban đầu bạn sẽ gặp phải sự cố, nhưng có thể gặp phải sự cố này sau một số thay đổi cập nhật hoặc thay đổi cấu hình.) cố gắng lắng nghe dưới cổng 80 trước khi máy chủ ứng dụng của bạn khởi chạy. (Có nhiều lý do khác nhau mà một quy trình có thể cố gắng đăng ký một số URL nhất định trên cổng 80 và lùi lại nếu không được phép.)
Vì vậy, nếu bạn muốn một dịch vụ có quyền truy cập độc quyền vào cổng 80, tốt hơn bạn nên nói với Windows. Nó không thực sự đủ tốt để cố gắng tắt tất cả các dịch vụ có thể cố gắng sử dụng cơ chế chia sẻ cổng thông thường, bởi vì thật khó để tự tin rằng bạn đã tìm thấy tất cả chúng. . có thể cho những người bạn không biết về chuyến đi của bạn.
Theo mặc định HTTP.SYS
(cơ chế chia sẻ cổng HTTP cơ bản trong Windows) có thể nghe trên tất cả các địa chỉ. Nhưng bạn có thể nói nó không phải. Trang này hiển thị một cách để làm điều đó: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/
Đó là một cách tương đối nhẹ để làm điều đó, bởi vì nó vẫn cho phép nghe trên localhost cho IPv6. Nó chỉ giải phóng cổng IPv4 80. Bạn có thể đưa nó đi xa hơn với cấu hình chuyên dụng hơn. (Bạn thậm chí có thể vô hiệu hóa HTTP.SYS
hoàn toàn, nhưng điều đó có thể phá vỡ mọi thứ bằng cách sử dụng các cổng khác ngoài 80, vì vậy nó có thể gây ra sự cố.)
Nhưng bất cứ điều gì bạn làm, vấn đề là đảm bảo rằng HTTP.SYS
không cố gắng lắng nghe cổng 80 trên địa chỉ IP mà bạn quan tâm. Khi bạn đã thực hiện điều đó, bạn không cần phải lo lắng về việc vô hiệu hóa các dịch vụ, bạn cũng không cần phải lo lắng về các thay đổi khác khi giới thiệu lại vấn đề. Nếu bạn đã đảm bảo rằng điểm cuối bạn cần thực sự nằm ngoài giới hạn cho việc chia sẻ cổng, thì bạn sẽ thấy rằng quy trình hệ thống dừng liên kết với nó.