ในระยะเวลาอันสั้นตั้งแต่ได้รับการพัฒนาและให้บริการ (น้อยกว่า 10 ปี) Nginx มีการเติบโตอย่างต่อเนื่องและมั่นคงในหมู่เว็บเซิร์ฟเวอร์เนื่องจากประสิทธิภาพสูงและการใช้หน่วยความจำต่ำ
ตั้งแต่ Nginx เป็นซอฟต์แวร์โอเพ่นซอร์สและฟรี ซึ่งถูกนำไปใช้โดยผู้ดูแลระบบเว็บเซิร์ฟเวอร์หลายพันรายทั่วโลก ไม่เพียงแต่ในเซิร์ฟเวอร์ Linux และ *nix เท่านั้น แต่ยังรวมถึงใน Microsoft Windows ด้วย
อย่าพลาด: Apache Name-based และ IP-based Virtual Hosting
สำหรับเราเคยชินที่สุด Apache, Nginx อาจมีช่วงการเรียนรู้ที่ค่อนข้างสูง (อย่างน้อยก็ในกรณีของฉัน) แต่มันจะได้ผลแน่นอนเมื่อคุณตั้งค่าไซต์สองแห่งและเริ่มดูสถิติการเข้าชมและการใช้ทรัพยากร
ในบทความนี้ เราจะอธิบายวิธีใช้ Nginx เพื่อตั้งค่า ตามชื่อ และ ip-based โฮสติ้งเสมือนใน CentOS/RHEL7 เซิร์ฟเวอร์และ เดเบียน8 และอนุพันธ์ เริ่มด้วย Ubuntu 15.04 และส่วนแยกของมัน
หากคุณยังไม่ได้ดำเนินการ โปรดติดตั้ง Nginx ก่อนดำเนินการต่อ หากคุณต้องการความช่วยเหลือในการเริ่มต้น การค้นหา nginx อย่างรวดเร็วในไซต์นี้จะส่งคืนบทความหลายบทความในหัวข้อนี้ คลิกที่ไอคอนรูปแว่นขยายที่ด้านบนของหน้านี้และ ค้นหาคำสำคัญ nginx. หากคุณไม่ทราบวิธีค้นหาบทความในไซต์นี้ ไม่ต้องกังวลที่นี่ เราได้เพิ่มลิงก์ไปยังบทความ nginx แล้ว เพียงแค่ดำเนินการและติดตั้งตามการแจกจ่าย Linux ของคุณ
จากนั้นเตรียมตัวให้พร้อมสำหรับบทช่วยสอนที่เหลือนี้
ฉันแน่ใจว่าคุณรู้อยู่แล้วว่าโฮสต์เสมือนคือเว็บไซต์ที่ให้บริการโดย Nginx ใน VPS คลาวด์เดียวหรือเซิร์ฟเวอร์จริง อย่างไรก็ตาม ในเอกสาร Nginx คุณจะพบคำว่า "บล็อกเซิร์ฟเวอร์"
แทน แต่โดยพื้นฐานแล้วเป็นสิ่งเดียวกันที่เรียกโดยชื่อต่างกัน
ขั้นตอนแรกในการตั้งค่าโฮสต์เสมือนคือการสร้างบล็อกเซิร์ฟเวอร์อย่างน้อยหนึ่งบล็อก (ในกรณีของเรา เราจะสร้างสองบล็อก หนึ่งบล็อกสำหรับแต่ละโดเมนจำลอง) ในไฟล์การกำหนดค่าหลัก (/etc/nginx/nginx.conf) หรือข้างใน /etc/nginx/sites-available.
แม้ว่าชื่อของไฟล์คอนฟิกูเรชันในไดเร็กทอรีนี้ (ไซต์-ใช้ได้) สามารถตั้งเป็นอะไรก็ได้ตามต้องการ เป็นความคิดที่ดีที่จะใช้ชื่อโดเมน และนอกจากนี้ เราเลือกที่จะเพิ่ม .conf
ส่วนขยายเพื่อระบุว่าเป็นไฟล์กำหนดค่า
บล็อกเซิร์ฟเวอร์เหล่านี้อาจค่อนข้างซับซ้อน แต่ในรูปแบบพื้นฐาน ประกอบด้วยเนื้อหาต่อไปนี้:
ใน /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
เซิร์ฟเวอร์ { ฟัง 80; server_name tecmintlovesnginx.com www.tecmintlovesnginx.com; access_log /var/www/logs/tecmintlovesnginx.access.log; error_log /var/www/logs/tecmintlovesnginx.error.log ข้อผิดพลาด; รูท /var/www/tecmintlovesnginx.com/public_html; ดัชนี index.html index.htm; }
ใน /etc/nginx/sites-available/nginxmeanspower.com.conf:
เซิร์ฟเวอร์ { ฟัง 80; server_name nginxmeanspower.com www.nginxmeanspower.com; access_log /var/www/logs/nginxmeanspower.access.log; error_log /var/www/logs/nginxmeanspower.error.log ข้อผิดพลาด; รูท /var/www/nginxmeanspower.com/public_html; ดัชนี index.html index.htm; }
คุณสามารถใช้บล็อกด้านบนเพื่อเริ่มการตั้งค่าโฮสต์เสมือนของคุณ หรือคุณสามารถสร้างไฟล์ด้วยโครงร่างพื้นฐานจาก /etc/nginx/sites-available/default (เดเบียน) หรือ /etc/nginx/nginx.conf.default (CentOS).
เมื่อคัดลอกแล้ว ให้เปลี่ยนสิทธิ์และความเป็นเจ้าของ:
# chmod 660 /etc/nginx/sites-available/tecmintlovesnginx.com.conf # chmod 660 /etc/nginx/sites-available/nginxmeanspower.com.conf
# chgrp www-data /etc/nginx/sites-available/tecmintlovesnginx.com.conf # chgrp www-data /etc/nginx/sites-available/nginxmeanspower.com.conf
# chgrp nginx /etc/nginx/sites-available/tecmintlovesnginx.com.conf # chgrp nginx /etc/nginx/sites-available/nginxmeanspower.com.conf
เมื่อเสร็จแล้ว คุณควรลบไฟล์ตัวอย่างหรือเปลี่ยนชื่อไฟล์เป็นอย่างอื่นเพื่อหลีกเลี่ยงความสับสนหรือความขัดแย้ง
โปรดทราบว่าคุณจะต้องสร้างไดเร็กทอรีสำหรับบันทึก (/var/www/logs
) และให้ผู้ใช้ Nginx (nginx หรือ www-dataขึ้นอยู่กับว่าคุณใช้งาน CentOS หรือ Debian) สิทธิ์ในการอ่านและเขียนทับ:
# mkdir /var/www/logs. # chmod -R 660 /var/www/logs. #chgrp/var/www/logs.
โฮสต์เสมือนต้องเปิดใช้งานโดยการสร้าง symlink ไปยังไฟล์นี้ในไดเร็กทอรีที่เปิดใช้งานไซต์:
# ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf # ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf
ถัดไป สร้างไฟล์ html ตัวอย่างชื่อ index.html
ข้างใน /var/www/
สำหรับแต่ละโฮสต์เสมือน (แทนที่ ตามความจำเป็น). แก้ไขรหัสต่อไปนี้ตามความจำเป็น:
Tecmint รัก Nginx Tecmint รัก Nginx!
สุดท้าย ทดสอบการกำหนดค่า Nginx และเริ่มเว็บเซิร์ฟเวอร์ หากมีข้อผิดพลาดในการกำหนดค่า คุณจะได้รับแจ้งให้แก้ไข:
# nginx -t && systemctl เริ่ม nginx
และเพิ่มรายการต่อไปนี้ในของคุณ /etc/hosts
ไฟล์ในเครื่องของคุณเป็นกลยุทธ์การแก้ปัญหาชื่อพื้นฐาน:
192.168.0.25 tecmintlovesnginx.com. 192.168.0.25 nginxmeanspower.com
จากนั้นเปิดเว็บเบราว์เซอร์และไปที่ URL ที่ระบุไว้ด้านบน:
หากต้องการเพิ่มโฮสต์เสมือนใน Nginx ให้ทำซ้ำขั้นตอนที่อธิบายไว้ข้างต้นหลายครั้งตามต้องการ
ตรงข้ามกับ ตามชื่อ โฮสต์เสมือนที่โฮสต์ทั้งหมดสามารถเข้าถึงได้ผ่านที่อยู่ IP เดียวกัน IP-based โฮสต์เสมือนต้องการที่แตกต่างกัน IP: พอร์ต
รวมกันแต่ละ.
ซึ่งช่วยให้เว็บเซิร์ฟเวอร์สามารถส่งคืนไซต์ต่างๆ ได้ ขึ้นอยู่กับที่อยู่ IP และพอร์ตที่รับคำขอ เนื่องจากโฮสต์เสมือนแบบระบุชื่อทำให้เราได้เปรียบในการแบ่งปันที่อยู่ IP และพอร์ต พวกเขาจึงเป็นมาตรฐานสำหรับ เว็บเซิร์ฟเวอร์เอนกประสงค์ และควรเป็นการตั้งค่าที่เลือกได้ เว้นแต่ Nginx เวอร์ชันที่คุณติดตั้งไว้จะไม่ สนับสนุน การระบุชื่อเซิร์ฟเวอร์ (สนี) ไม่ว่าจะเป็นเพราะเป็นเวอร์ชันที่ล้าสมัยจริงๆ หรือเพราะถูกคอมไพล์โดยไม่มี –with-http_ssl_module รวบรวมตัวเลือก
ถ้า,
# nginx -V.
ไม่ส่งคืนตัวเลือกที่เน้นด้านล่าง:
คุณจะต้องอัปเดตเวอร์ชันของ Nginx หรือคอมไพล์ใหม่ ขึ้นอยู่กับวิธีการติดตั้งดั้งเดิมของคุณ สำหรับการรวบรวม Nginx ให้ทำตามบทความด้านล่าง:
สมมติว่าเราพร้อมแล้ว เราต้องสังเกตว่าข้อกำหนดเบื้องต้นอื่นสำหรับ IP-based โฮสต์เสมือนคือความพร้อมใช้งานของ IP ที่แยกจากกัน – ไม่ว่าจะโดยการกำหนดให้กับอินเทอร์เฟซเครือข่ายที่แตกต่างกัน หรือผ่านการใช้ IP เสมือน (หรือที่เรียกว่า IP aliasing)
เพื่อดำเนินการนามแฝง IP ใน เดเบียน (สมมติว่าคุณกำลังใช้ eth0), แก้ไข /etc/network/interfaces
ดังนี้
eth0:1 อัตโนมัติ iface eth0:1 ที่อยู่คงที่ inet 192.168.0.25 netmask 255.255.255.0 เครือข่าย 192.168.0.0 ออกอากาศ 192.168.0.255 เกตเวย์ 192.168.0.1 อัตโนมัติ eth0:2. iface eth0:2 ที่อยู่คงที่ inet 192.168.0.26 netmask 255.255.255.0 เครือข่าย 192.168.0.0 ออกอากาศ 192.168.0.255 เกตเวย์ 192.168.0.1
ในตัวอย่างข้างต้น เราสร้าง NIC เสมือนสองตัวจาก eth0: eth0:1
(192.168.0.25) และ eth0:2
(192.168.0.26).
ใน CentOS ให้เปลี่ยนชื่อ /etc/sysconfig/network-scripts/ifcfg-enp0s3 เช่น ifcfg-enp0s3:1
และทำสำเนาเป็น ifcfg-enp0s3:2
จากนั้นเพียงแค่เปลี่ยนบรรทัดต่อไปนี้ตามลำดับ:
DEVICE="enp0s3:1" IPADDR=192.168.0.25.
และ
DEVICE="enp0s3:2" IPADDR=192.168.0.26.
เมื่อเสร็จแล้ว ให้เริ่มบริการเครือข่ายใหม่:
# systemctl รีสตาร์ทเครือข่าย
ถัดไป ทำการเปลี่ยนแปลงต่อไปนี้กับบล็อกเซิร์ฟเวอร์ที่กำหนดไว้ก่อนหน้านี้ในบทความนี้:
ใน /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
ฟัง 192.168.0.25:80.
ใน /etc/nginx/sites-available/nginxmeanspower.com.conf:
ฟัง 192.168.0.26:80.
สุดท้าย ให้รีสตาร์ท Nginx เพื่อให้การเปลี่ยนแปลงมีผล
# systemctl รีสตาร์ท nginx
และอย่าลืมอัปเดตท้องถิ่นของคุณ /etc/hosts
ตาม:
192.168.0.25 tecmintlovesnginx.com. 192.168.0.26 nginxmeanspower.com
ดังนั้นแต่ละคำขอที่ส่งไปยัง 192.168.0.25 และ 192.168.0.26 บนท่าเรือ 80 จะกลับมา tecmintlovesnginx.com และ nginxmeanspower.comตามลำดับ:
ดังที่คุณเห็นในภาพด้านบน ตอนนี้คุณมีโฮสต์เสมือนที่ใช้ IP สองตัวโดยใช้ NIC เดียวในเซิร์ฟเวอร์ของคุณที่มีนามแฝง IP ต่างกันสองรายการ
ในบทช่วยสอนนี้ เราได้อธิบายวิธีตั้งค่าทั้งสองอย่างแล้ว ตามชื่อ และ IP-based โฮสต์เสมือนใน Nginx แม้ว่าคุณอาจต้องการใช้ตัวเลือกแรก แต่สิ่งสำคัญคือต้องรู้ว่าตัวเลือกอื่นยังคงอยู่ ถ้าคุณต้องการ – เพียงให้แน่ใจว่าคุณตัดสินใจหลังจากพิจารณาข้อเท็จจริงที่ระบุไว้ในนี้ แนะนำ.
นอกจากนี้ คุณอาจต้องการคั่นหน้า เอกสาร Nginx เนื่องจากมีค่าควรและควรอ้างอิงบ่อยๆ ขณะสร้างบล็อกเซิร์ฟเวอร์ (มีอยู่แล้ว – เรากำลังพูดถึงภาษา Nginx อยู่) และกำหนดค่าเหล่านี้ คุณจะไม่เชื่อตัวเลือกทั้งหมดที่มีให้กำหนดค่าและปรับแต่งเว็บเซิร์ฟเวอร์ที่โดดเด่นนี้
เช่นเคย อย่าลังเลที่จะติดต่อเราโดยใช้แบบฟอร์มด้านล่าง หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้ เราหวังเป็นอย่างยิ่งว่าจะได้รับการติดต่อจากคุณ และคำติชมของคุณเกี่ยวกับคู่มือนี้ยินดีเป็นอย่างยิ่ง