Tài liệu chính thức của NGINX khuyến khích sử dụng lệnh trả về thay vì sử dụng lệnh viết lại để thực hiện chuyển hướng. Điều này là như vậy, vì yêu cầu được viết lại không có nghĩa là cho máy chủ đó, nhưng nó vẫn được xử lý trong khối máy chủ đó. Vì vậy, chuyển hướng được thực hiện chính xác với một lệnh quay trở lại, vì tất cả quá trình xử lý bị dừng lại và một phản hồi được gửi ngay lập tức. NGINX không khuyến khích viết lại để chuyển hướng ở đây: http://nginx.org/en/docs/http/converting_rewrite_rules.html
Cú pháp của lệnh return là: URL mã trả về; Vì ban đầu bạn đang viết lại vĩnh viễn, do đó, theo đó bạn có thể sử dụng 301 làm mã để phản hồi, cho biết đó là một chuyển hướng vĩnh viễn. Địa chỉ https của bạn sẽ được chuyển trong phần url. Tham khảo: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
Vì vậy, cấu hình chính xác của bạn sẽ là
server {
listen 80;
server_name *.mydomain.com;
#Redirect all nonssl requests to ssl.
return 301 https://$server_name$request_uri;
}
Điều này có thể sẽ cho phép bạn chuyển hướng chính xác đến tên miền ssl của bạn, với một khối máy chủ ký tự đại diện. Bạn cũng có thể thử tên máy chủ chung gạch dưới '_' hoặc $ host như được đề xuất trong nhận xét ở trên. Hãy cho chúng tôi biết!