Tôi không nghĩ câu trả lời @Klamberext thực sự trả lời câu hỏi. Nghĩa là, máy chủ web nginx có một máy chủ mặc định Ý tưởng. Trang tài liệu chính thức về chủ đề này có thể được tìm thấy ở đây: Cách nginx xử lý yêu cầu. Tuy nhiên, một trong các khối máy chủ lắng nghe trên một số tổ hợp cổng/giao diện mạng sẽ luôn hoạt động như một tổ hợp mặc định. Nếu bạn không chỉ định khối máy chủ đó một cách rõ ràng, thì đó sẽ là khối máy chủ đầu tiên trong cấu hình của bạn. Điều đó có nghĩa là máy chủ của bạn chặn với server_name app.example.com www.app.example.com;
dòng sẽ là khối máy chủ mặc định cho bất kỳ yêu cầu nào đến trên cổng 443 TCP, phục vụ bất kỳ yêu cầu nào khi HTTP Chủ nhà
tiêu đề sẽ không phù hợp ví dụ.com
hoặc www.example.com
(hoặc nếu không có Chủ nhà
tiêu đề nào cả).
Như @Klamberext đã nói, một thực tế phổ biến là xác định một khối máy chủ sơ khai để nắm bắt tất cả các yêu cầu trong đó Chủ nhà
Tiêu đề HTTP không khớp với bất kỳ miền nào bạn đang phục vụ. Bạn có thể xem một ví dụ tại cái này Vì vậy câu trả lời. Thông thường, một khối máy chủ như vậy chứa trả lại 444;
là mã trả về nginx đặc biệt để đóng kết nối ngay lập tức.Tuy nhiên, có vẻ như bạn cần thứ gì đó ngược lại và bạn sẽ cần hai khối máy chủ để hoàn thành nó, vì như đã nói, một khối máy chủ duy nhất lắng nghe trên cổng TCP 8080 sẽ hoạt động như khối mặc định cho dù đó là gì. Chủ nhà
tiêu đề được đặt thành:
người phục vụ {
nghe 8080 ;
server_name example.com www.example.com app.example.com www.app.example.com;
trả lại 444;
}
người phục vụ {
nghe 8080 default_server;
... cấu hình của bạn ở đây
}
Thay vào đó, bạn có thể kiểm tra Chủ nhà
giá trị tiêu đề bên trong khối máy chủ của bạn, ví dụ để chặn một ví dụ.com
tên miền và bất kỳ tên miền phụ nào của nó:
người phục vụ {
nghe 8080 ;
if ($http_host ~ \.?example\.com$) { return 444; }
... cấu hình của bạn ở đây
}