บทแนะนำที่ดีที่สุดของ Alibaba Cloud Nginx: ตั้งแต่การปรับใช้เว็บไซต์แบบคงที่ไปจนถึงการกำหนดค่าพร็อกซีย้อนกลับประสิทธิภาพสูง
ในการเปลี่ยนแปลงทางดิจิทัลขององค์กรในปัจจุบันการสร้างระบบเว็บที่มีความพร้อมใช้งานสูงพร้อมกันสูงและสถาปัตยกรรมที่สวยงามนั้นแยกไม่ออกจากโครงสร้างพื้นฐานระบบคลาวด์ที่เหมาะสมและการเลือกเว็บเซิร์ฟเวอร์ที่ยอดเยี่ยม ECS(Elastic Compute Service) เซิร์ฟเวอร์คลาวด์ของ Alibaba Cloud เป็นฐานพลังงานคอมพิวเตอร์อันดับต้นๆในประเทศจีนและทั่วโลกพร้อมด้วยเซิร์ฟเวอร์ที่ขับเคลื่อนด้วยเหตุการณ์แบบอะซิงโครนัสประสิทธิภาพสูง
Nginx
ได้กลายเป็นการกำหนดค่ามาตรฐานของสถาปัตยกรรมอินเทอร์เน็ตส่วนใหญ่
ไม่ว่าจะเป็นองค์กรที่ไปต่างประเทศอีคอมเมิร์ซข้ามพรมแดนหรือแอพพลิเคชั่นที่มีการทำงานพร้อมกันสูงในท้องถิ่นการกำหนดค่าหลักของ Nginx เป็นหลักสูตรภาคบังคับสำหรับสถาปนิกระบบและวิศวกรปฏิบัติการและบำรุงรักษาบทความนี้จะขึ้นอยู่กับการต่อสู้จริงจาก
การสร้างสภาพแวดล้อมการปรับใช้เว็บไซต์แบบคงที่พร็อกซีย้อนกลับและการกำหนดค่าการแยกแบบไดนามิกและคงที่
และมิติอื่นๆจะพาคุณไปทำความเข้าใจอย่างลึกซึ้งเกี่ยวกับการปรับแต่งขั้นสูงของ Nginx ในสภาพแวดล้อมระบบคลาวด์ของอาลีบาบา
การเตรียมการ: การเตรียมโครงสร้างพื้นฐาน
ก่อนเริ่มการกำหนดค่าทั้งหมดคุณต้องมีเซิร์ฟเวอร์ Linux ที่ทำงานในระบบคลาวด์ก่อน
📌เคล็ดลับในการเลือกสถาปัตยกรรม: สำหรับบริษัทในต่างประเทศหรือธุรกิจที่มีความต้องการที่เข้มงวดในการยกเว้นการยื่นมักจะเลือกเวอร์ชันระหว่างประเทศของ Alibaba Cloud (เช่นฮ่องกงสิงคโปร์และโหนดตะวันตกของสหรัฐอเมริกา) ในขณะที่ธุรกิจที่มีส่วนร่วมอย่างลึกซึ้งในตลาดในประเทศนั้นมีแนวโน้มมากกว่าโหนดแผ่นดินใหญ่เวอร์ชันในประเทศบริษัทในต่างประเทศหลายแห่งไม่สามารถลงทะเบียนได้โดยตรงเนื่องจากไม่มีวิธีการชำระเงินในต่างประเทศหรือข้อมูลประจำตัวในต่างประเทศในขณะนี้การซื้อบัญชี Alibaba Cloud และการเติมเงินที่เป็นไปตามข้อกำหนดผ่านผู้ให้บริการช่องทางที่ได้รับอนุญาตอย่างเป็นทางการได้กลายเป็นแผนการเลือกที่มีประสิทธิภาพและปลอดภัยที่สุดในอุตสาหกรรม
1.เปิดพอร์ตกลุ่มความปลอดภัย
เมื่ออินสแตนซ์ ECS ของคุณพร้อมก่อนอื่นคุณต้องลงชื่อเข้าใช้คอนโซล Alibaba Cloud เพิ่มกฎทิศทางในกลุ่มความปลอดภัยที่ตรงกับอินสแตนซ์และปล่อยพอร์ตเว็บหลักสองพอร์ตต่อไปนี้:
TCP 80พอร์ต: สำหรับการเข้าถึง HTTP ปกติ
พอร์ต TCP 443: การเข้าถึง HTTPS สำหรับการเข้ารหัส
2.การปรับปรุงสภาพแวดล้อมของระบบด้วยการติดตั้ง Nginx
กระแสหลักในปัจจุบัน
Alinux 3 / CentOS 8
ระบบเป็นตัวอย่างเราใช้
Dnf
หรือ
Yum
ผู้จัดการแพคเกจได้อย่างรวดเร็วติดตั้ง Nginx:
Bash
# อัพเดตแพคเกจระบบ
Sudo dnf update -y
# ติดตั้ง Nginx
Sudo dnf install -y nginx
# เริ่มบริการและตั้งค่าการบูตด้วยตนเอง
Sudo systemctl start nginx
Sudo systemctl enable nginx
# ตรวจสอบสถานะการทำงานของ Nginx
Sudo systemctl status nginx
เมื่อสถานะปรากฏเป็น
Active (running)
เมื่อคุณป้อน IP เครือข่ายสาธารณะ ECS ของคุณในเบราว์เซอร์หากคุณเห็น
หน้าต้อนรับของ Nginx ระบุว่าสภาพแวดล้อมพื้นฐานได้รับการตั้งค่าเรียบร้อยแล้ว
1.การต่อสู้ขั้นสูง: การปรับใช้เว็บไซต์แบบคงที่
ในการผลิตจริงให้แก้ไขไฟล์คอนฟิกูเรชันหลักโดยตรง
/Etc/nginx/nginx.conf
ไม่ใช่นิสัยที่ดีแนวทางปฏิบัติที่ดีที่สุดของ Nginx คือ
เก็บโปรไฟล์หลักให้สะอาดและสร้างแยกต่างหากสำหรับแต่ละเว็บไซต์ที่แยกต่างหากใน/etc/nginx/conf.d/ไดเรกทอรีโปรไฟล์ conf
。
สมมติว่าเราต้องการปรับใช้แอปพลิเคชันหน้าเดียวที่ทันสมัย (SPA เช่นโครงการ Vue หรือ React)
1.สร้างมาตรฐานแคตตาล็อกโครงการ
แบช
Sudo mkdir-p/www/ wwwroot/mysite
# อัปโหลดไฟล์ในไดเร็กทอรี dist ที่บรรจุไว้ในส่วนหน้าไปยังไดเร็กทอรีนั้น
2.เขียนโปรไฟล์ไซต์
ใน
/Etc/nginx/conf.d/
สร้างภายใต้ไดเร็กทอรี
Mysite.conf
:
แบช
Sudo vim/etc/nginx/conf.d/mysite.conf
กรอกการกำหนดค่ามาตรฐานสภาพแวดล้อมการผลิตต่อไปนี้:
เอ็นจินซ์
Server {
Listen 80;
Example.com www.example.com server_name; # แทนที่ชื่อโดเมนจริงของคุณ
Root/www/ wwwroot/mysite;
Index index.html index.htm;
# เปิดการบีบอัด Gzip ช่วยเพิ่มความเร็วในการโหลดหน้าจอแรกในสภาพแวดล้อมเครือข่ายในทะเล
Gzip on;
Gzip_min_length 1k;
Gzip_comp_level 6;
Gzip_types text/plain text/css application/json application/javascript text/xml;
# แก้ปัญหา404ภายใต้โหมดประวัติเส้นทางส่วนหน้า
Location/ {
Try_files $ uri $ uri/ /index.html;
}
# การเพิ่มประสิทธิภาพแคชทรัพยากรแบบคงที่
Location ~ * \. (Jpg | jpeg | png | gif | ico | css | js)$ {
Expires 7d;
Access_log off;
}
# ข้อผิดพลาดการเปลี่ยนเส้นทางหน้า
Error_page 404 /404.html;
Error_page 500 502 503 504 /50x.html;
Location = /50x.html {
Root/usr/share/nginx/html;
}
}
⚠คำเตือนการปฏิบัติตามข้อกำหนด: หากการแก้ปัญหาชื่อโดเมนของคุณชี้ไปที่อินสแตนซ์ ECS ของ Alibaba Cloud ในจีนแผ่นดินใหญ่ชื่อโดเมนจะต้องยื่น ICP กับกระทรวงอุตสาหกรรมและเทคโนโลยีสารสนเทศมิฉะนั้นไฟร์วอลล์ขอบเขตของ Alibaba Cloud จะบล็อกคำขอการเข้าถึงพอร์ต80/443โดยอัตโนมัติหากไม่สามารถยื่นธุรกิจได้ขอแนะนำให้ใช้ผู้ให้บริการช่องทางเพื่อซื้อบริการสถานีระหว่างประเทศผ่านบัญชี Alibaba Cloud และปรับใช้เว็บไซต์ในโหนดในฮ่องกงหรือต่างประเทศ
2.แกนขั้นสูง: ตัวแทนย้อนกลับและการกำหนดค่าการแยกไดนามิกและคงที่
Reverse Proxy เป็นฟังก์ชันที่ทรงพลังที่สุดของ Nginx ภายใต้สถาปัตยกรรมนี้ Nginx เป็นทางเข้าเดียวสำหรับการรับส่งข้อมูลมีหน้าที่รับคำร้องขอจากไคลเอ็นต์จากนั้นส่งต่อคำขอไปยังเซิร์ฟเวอร์แอปพลิเคชันจริง (เช่น Tomcat, Node.js, Go, Python หรือ Spring Boot)
สิ่งนี้ไม่เพียง
ซ่อน IP จริงของเซิร์ฟเวอร์แบ็กเอนด์
ปรับปรุงความปลอดภัยและสามารถรับปริมาณงานพร้อมกันที่สูงขึ้น
1.พื้นฐานตัวแทนย้อนกลับ
สมมติว่าแอปพลิเคชัน Spring Boot ส่วนหลังของคุณกำลังทำงานในอินสแตนซ์เดียวกัน
8080
บนพอร์ตและไม่ต้องการเปิดเผยพอร์ต8080เราสามารถกำหนดค่าใน Nginx:
2.ระดับการผลิตขั้นสูง: การแยกแบบไดนามิกและคงที่และการกำหนดเส้นทางหลายพอร์ต
ในสถาปัตยกรรมระดับองค์กรที่ซับซ้อนมากขึ้นเรามักใช้ชื่อโดเมนเดียวกันเพื่อแยกความแตกต่างผ่านคำนำหน้า URL
ทรัพยากรคงที่ส่วนหน้า
กับ
อินเทอร์เฟซ API แบบไดนามิกแบ็คเอนด์
:
ผ่านสิ่งนี้
การแยกแบบไดนามิกและแบบคงที่
การกำหนดค่า Nginx ไม่จำเป็นต้องรบกวนกระบวนการ Java/Go ส่วนหลังเมื่อประมวลผลรูปภาพที่เกิดขึ้นพร้อมกันสูง CSS และคำขอแบบคงที่ JS ซึ่งไม่เพียงช่วยลดค่าใช้จ่ายหน่วยความจำของเซิร์ฟเวอร์ส่วนหลังได้อย่างมากแต่ยังเพิ่มระบบเว็บไซต์ทั้งหมดเป็นสองเท่าขีดจำกัดปริมาณงาน
3.การกำหนดค่าที่มีประสิทธิภาพและแนวทางการดำเนินการและการบำรุงรักษา
หลังจากแก้ไขไฟล์คอนฟิกูเรชัน Nginx แล้ว
อย่ารีสตาร์ทบริการโดยตรงและสุ่มสี่สุ่มห้า
。หากมีข้อผิดพลาดทางไวยากรณ์ในการกำหนดค่า (ตัวอย่างเช่นไม่มีเครื่องหมายเซกโต
;
หรือวงเล็บปีกกาไม่ปิด) การรีสตาร์ทโดยตรงจะทำให้บริการเว็บออนไลน์ล่มทันทีและไม่สามารถดึงขึ้นได้
กระบวนการโอเวอร์โหลดที่ราบรื่นที่ถูกต้อง
1.การตรวจสอบไวยากรณ์: ตรวจสอบความปลอดภัยของบริการออนไลน์
ดำเนินการในเทอร์มินัล
Sudo nginx -t
คำสั่ง
ถ้ากลับ
Nginx: configuration file... Test is successful
, พิสูจน์ว่าไวยากรณ์ของไฟล์คอนฟิกูเรชันถูกต้องสมบูรณ์
แน่นอน.
2.โหลดเรียบ (Reload): ศูนย์หยุดการอัปเดตความร้อน
ดำเนินการคำสั่ง:
Sudo systemctl reload nginx
。
Reload
กับ
Restart
มันจะนำกระบวนการ Master ของ Nginx ไปใช้อย่างราบรื่นเพื่อรับกระบวนการทำงานใหม่เพื่อจัดการกับคำขอใหม่ในขณะที่กระบวนการทำงานเก่าจะถูกทำลายโดยอัตโนมัติหลังจากประมวลผลการเชื่อมต่อปัจจุบันเพื่อให้บรรลุ
ธุรกิจโดยไม่มีการหยุดชะงัก
การอัปเดตการกำหนดค่า
4.สรุปและข้อเสนอแนะสำหรับการเลือกบริษัทในต่างประเทศ
การกำหนดค่าของ Nginx มีการเปลี่ยนแปลงตลอดเวลาแต่ก็แยกกันไม่ออกผ่านการแบ่งโฮสต์เสมือนที่เหมาะสมอย่างเข้มงวด
Proxy_pass
ส่วนหัวของคำขอถูกส่งผ่านผ่านและด้วยการเชื่อมโยงเครือข่ายที่เสถียรและยอดเยี่ยมของ Alibaba Cloud ECS คุณสามารถรองรับแอปพลิเคชัน PV เฉลี่ยต่อวันได้อย่างง่ายดาย
สุดท้ายผู้ปฏิบัติงานด้านคลาวด์คอมพิวติ้งอาวุโสเตือนคุณ:
การออกแบบสถาปัตยกรรมต้องเป็นไปตามข้อกำหนด
หากคุณพบว่าความล่าช้าของ API ส่วนหลังสูงเกินไปเนื่องจากความผันผวนของเครือข่ายข้ามพรมแดนในระหว่างขั้นตอนการกำหนดค่าหรือพลาดโอกาสทางการตลาดเนื่องจากรอบการจัดเก็บข้อมูลที่ยาวนานคุณควรวางแผนระยะยาวในช่วงเริ่มต้นของการวางแผนสำหรับบริษัทที่มีความต้องการในการขยายธุรกิจในต่างประเทศโดยเฉพาะให้เลือกช่องทาง Reseller ของบุคคลที่สามที่เป็นทางการซึ่งรับประกันโดยสัญญาอย่างเป็นทางการ
การซื้อด้วยบัญชีอาลีคลาวด์
บริการเวอร์ชันสากลการหลีกเลี่ยงชื่อจริงที่ซับซ้อนและข้อจำกัดการเข้าถึงระดับภูมิภาคจากแหล่งที่มาเป็นกฎทองเพื่อให้การดำเนินธุรกิจในต่างประเทศเป็นไปอย่างราบรื่น
