Android

เปลี่ยนเส้นทาง http เป็น https ใน nginx

Faith Evans feat. Stevie J – "A Minute" [Official Music Video]

Faith Evans feat. Stevie J – "A Minute" [Official Music Video]

สารบัญ:

Anonim

ในคู่มือนี้เราจะอธิบายวิธีเปลี่ยนเส้นทางการรับส่งข้อมูล HTTP ไปยัง HTTPS ใน Nginx

Nginx เด่นชัด“ engine x” เป็นฟรี, โอเพ่นซอร์ส, ประสิทธิภาพสูง HTTP และ reverse proxy server รับผิดชอบในการจัดการโหลดของเว็บไซต์ที่ใหญ่ที่สุดบนอินเทอร์เน็ต

ซึ่งแตกต่างจาก HTTP ที่คำขอและการตอบสนองถูกส่งและส่งกลับในรูปแบบธรรมดา HTTPS ใช้ TLS / SSL เพื่อเข้ารหัสการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์

มีประโยชน์มากมายในการใช้ HTTPS ผ่าน HTTP เช่น:

  • ข้อมูลทั้งหมดจะถูกเข้ารหัสทั้งสองทิศทาง ดังนั้นข้อมูลที่ละเอียดอ่อนจะไม่สามารถอ่านได้หากถูกดักฟัง Google Chrome และเบราว์เซอร์ยอดนิยมอื่น ๆ ทั้งหมดจะทำเครื่องหมายเว็บไซต์ของคุณว่าปลอดภัย HTMLTPS ช่วยให้คุณใช้โปรโตคอล HTTP / 2 ซึ่งช่วยปรับปรุงประสิทธิภาพของเว็บไซต์ได้อย่างมาก Google ชอบเว็บไซต์ HTTPS ไซต์ของคุณจะอยู่ในอันดับที่ดีขึ้นหากแสดงผ่าน

วิธีที่ต้องการในการเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS ใน Nginx คือการกำหนดค่าบล็อกเซิร์ฟเวอร์แยกต่างหากสำหรับแต่ละรุ่นของเว็บไซต์ คุณควรหลีกเลี่ยงการเปลี่ยนทิศทางทราฟฟิกโดยใช้คำสั่ง if ซึ่งอาจทำให้เซิร์ฟเวอร์ไม่สามารถคาดเดาได้

เปลี่ยนเส้นทาง HTTP เป็น HTTPS ต่อไซต์

หากต้องการเปลี่ยนเส้นทางเว็บไซต์เดียวไปยัง HTTPS ให้เปิดไฟล์การกำหนดค่าโดเมนและทำการเปลี่ยนแปลงต่อไปนี้:

server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; }

มาแยกย่อยบรรทัดโค้ดทีละบรรทัด:

  • listen 80 - บล็อกเซิร์ฟเวอร์จะฟังการเชื่อมต่อขาเข้าที่พอร์ต 80 สำหรับโดเมนที่ระบุ server_name linuxize.com www.linuxize.com - ระบุชื่อโดเมนของบล็อกเซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่าคุณแทนที่ด้วยชื่อโดเมนของคุณ return 301 - เปลี่ยนเส้นทางปริมาณการใช้ไปยังเว็บไซต์รุ่น HTTPS ตัวแปร $request_uri เป็น URI คำขอแบบเต็มรวมถึงข้อโต้แย้ง

โดยปกติแล้วคุณจะต้องการเปลี่ยนเส้นทางเวอร์ชัน HTTPS www ของเว็บไซต์เป็นไม่ใช่ www หรือในทางกลับกัน วิธีที่แนะนำในการเปลี่ยนเส้นทางคือการสร้างบล็อกเซิร์ฟเวอร์แยกต่างหากสำหรับทั้งรุ่น www และรุ่นที่ไม่ใช่ www

ตัวอย่างเช่นหากต้องการเปลี่ยนเส้นทางคำขอ HTTPS www ไปยังที่ไม่ใช่ www คุณจะต้องใช้การกำหนดค่าต่อไปนี้:

server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name www.linuxize.com; #… other code return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name linuxize.com; #… other code }

เปลี่ยนเส้นทางไซต์ทั้งหมดไปยัง HTTPS

หากเว็บไซต์ทั้งหมดที่โฮสต์บนเซิร์ฟเวอร์ได้รับการกำหนดค่าให้ใช้ HTTPS และคุณไม่ต้องการสร้างบล็อกเซิร์ฟเวอร์ HTTP แยกต่างหากสำหรับแต่ละไซต์คุณสามารถสร้างบล็อกเซิร์ฟเวอร์ HTTP แบบ catch-all เดียว บล็อกนี้จะเปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดไปยังบล็อก HTTPS ที่เหมาะสม

ในการสร้างบล็อก HTTP แบบ catch-all เดียวซึ่งจะเปลี่ยนเส้นทางผู้เยี่ยมชมไปยังเวอร์ชัน HTTPS ของไซต์ให้เปิดไฟล์การกำหนดค่า Nginx และทำการเปลี่ยนแปลงต่อไปนี้:

server { listen 80 default_server; listen:80 default_server; server_name _; return 301 https://$host$request_uri; }

ลองวิเคราะห์โค้ดทีละบรรทัด:

  • listen 80 default_server - ตั้งค่าบล็อกเซิร์ฟเวอร์นี้เป็นบล็อกเริ่มต้น (catch-all) สำหรับโดเมนที่ไม่ตรงกันทั้งหมด server_name _ - _ เป็นชื่อโดเมนที่ไม่ถูกต้องที่ไม่ตรงกับชื่อโดเมนจริงใด ๆ return 301 - เปลี่ยนเส้นทางปริมาณข้อมูลไปยังบล็อกเซิร์ฟเวอร์ HTTPS ที่สอดคล้องกันด้วยรหัสสถานะ 301 (ย้ายอย่างถาวร) ตัวแปร $host เก็บชื่อโดเมนของคำขอ

ตัวอย่างเช่นหากผู้เข้าชมเปิด http://example.com/page2 ในเบราว์เซอร์ Nginx จะเปลี่ยนเส้นทางคำขอไปที่ https://example.com/page2

หากเป็นไปได้ควรสร้างการเปลี่ยนเส้นทางในแต่ละโดเมนแทนการเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS ทั่วโลก

ข้อสรุป

เมื่อคุณมีใบรับรอง SSL ติดตั้งบนเว็บไซต์ของคุณคุณควรเปลี่ยนเส้นทางการรับส่งข้อมูล HTTP ไปยัง

ใน Nginx วิธีที่แนะนำในการเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS คือการสร้างบล็อกเซิร์ฟเวอร์แยกต่างหากและทำการเปลี่ยนเส้นทาง 301

Nginx