Tôi có một máy chủ web với nhiều máy chủ ảo. Chỉ có 1 trong số đó là SSL. Vấn đề là, vì không có khối máy chủ bắt kịp nghe SSL, mọi yêu cầu https đến các trang web khác đều được cung cấp bởi khối 1 SSL.
Cấu hình của tôi, về cơ bản, trông như thế này:
# the catch all
server {
listen 80 default;
# I could add this, but since I have no default cert, I cannot enable SSL,
# and this listen ends up doing nothing (apparently).
# listen 443;
server_name _;
# ...
}
# some server
server {
listen 80;
server_name server1.com;
# ...
}
# some other server ...
server {
listen 80;
server_name server2.com;
# ...
}
# ... and it's https equivalent
server {
listen 443;
ssl on;
server_name server2.com;
# ...
}
Bây giờ vì không có trình nghe mặc định cho 443, nên một yêu cầu như thế https://server1.com
cuối cùng sẽ được phục vụ bởi server2.com
khối https. Điều này tuân theo logic cho server_name
trong các tài liệu.
Nếu không khớp, một khối máy chủ {...} trong tệp cấu hình sẽ được sử dụng dựa trên thứ tự sau:
- khối máy chủ có chỉ thị nghe phù hợp được đánh dấu là [default | default_server]
- khối máy chủ đầu tiên có lệnh nghe phù hợp (hoặc nghe ngầm 80;)
Giải pháp ưa thích cho vấn đề này là gì? Tôi có cần thiết lập chứng chỉ giả cho việc bắt tất cả khối máy chủ để tôi có thể nghe trên 443 và xử lý các yêu cầu xấu không? Có một tham số mà tôi không biết về việc buộc một tên máy chủ chính xác khớp với server
?