เอกสารอย่างเป็นทางการของ NGINX สนับสนุนให้ใช้คำสั่งส่งคืนแทนที่จะใช้คำสั่งเขียนซ้ำสำหรับการเปลี่ยนเส้นทางที่มีผล นี่เป็นเช่นนั้นเนื่องจากคำขอที่เขียนใหม่ไม่ได้มีไว้สำหรับเซิร์ฟเวอร์นั้น แต่ก็ยังได้รับการประมวลผลในบล็อกเซิร์ฟเวอร์นั้น ดังนั้นการเปลี่ยนเส้นทางจะทำได้อย่างถูกต้องด้วยคำสั่งส่งคืนแทนเนื่องจากการประมวลผลทั้งหมดจะหยุดและการตอบสนองจะถูกส่งทันที NGINX ไม่อนุญาตให้เขียนซ้ำสำหรับการเปลี่ยนเส้นทางที่นี่: http://nginx.org/en/docs/http/converting_rewrite_rules.html
ไวยากรณ์สำหรับ directive return คือ: return code URL; เนื่องจากคุณทำการเขียนใหม่อย่างถาวรดังนั้นคุณจึงสามารถใช้ 301 เป็นรหัสเพื่อตอบกลับโดยระบุว่าเป็นการเปลี่ยนเส้นทางถาวร ที่อยู่ https ของคุณจะถูกส่งผ่านในส่วน url การอ้างอิง: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
ดังนั้นการกำหนดค่าที่ถูกต้องของคุณจะเป็น
server {
listen 80;
server_name *.mydomain.com;
#Redirect all nonssl requests to ssl.
return 301 https://$server_name$request_uri;
}
สิ่งนี้อาจช่วยให้คุณเปลี่ยนเส้นทางไปยังโดเมน ssl ของคุณได้อย่างถูกต้องพร้อมกับบล็อกเซิร์ฟเวอร์ไวด์การ์ด นอกจากนี้คุณยังสามารถลองใช้ชื่อเซิร์ฟเวอร์ทั่วไป '_' หรือ $ host ตามที่แนะนำในความคิดเห็นด้านบน แจ้งให้เราทราบ!