วิธีการตั้งค่าโฮสต์เสมือนตามชื่อและตาม IP (บล็อกเซิร์ฟเวอร์) ด้วย NGINX
ในระยะเวลาอันสั้นนับตั้งแต่ได้รับการพัฒนาและให้บริการ (มากกว่า 10 ปีเล็กน้อย) Nginx พบกับการเติบโตที่ยั่งยืนและมั่นคงในบรรดาเว็บเซิร์ฟเวอร์ เนื่องจากประสิทธิภาพสูงและการใช้หน่วยความจำต่ำ
เนื่องจาก Nginx เป็นซอฟต์แวร์โอเพ่นซอร์สฟรี จึงได้รับการยอมรับจากผู้ดูแลระบบเว็บเซิร์ฟเวอร์หลายพันรายทั่วโลก ไม่เพียงแต่ในเซิร์ฟเวอร์ Linux และ *nix เท่านั้น แต่ยังรวมถึงใน Microsoft Windows ด้วย
อย่าพลาด: โฮสติ้งเสมือนตามชื่อ Apache และตาม IP
สำหรับพวกเราที่คุ้นเคยกับ Apache มากที่สุด Nginx อาจมีช่วงการเรียนรู้ที่ค่อนข้างชัน (อย่างน้อยก็ในกรณีของฉัน) แต่จะคุ้มค่าอย่างแน่นอนเมื่อคุณตั้งค่าสองสามรายการ ของไซต์และเริ่มดูสถิติการเข้าชมและการใช้ทรัพยากร
ในบทความนี้ เราจะอธิบายวิธีใช้ Nginx เพื่อตั้งค่าโฮสติ้งเสมือน ตามชื่อ และ ตาม IP ใน CentOS/RHEL เซิร์ฟเวอร์ 7 และ Debian 8 และอนุพันธ์ เริ่มต้นด้วย Ubuntu 15.04 และส่วนแยก
สถานการณ์การทดสอบของเราสำหรับบทความนี้เป็นดังนี้:
- ระบบปฏิบัติการ: เซิร์ฟเวอร์ Debian 8 Jessie [IP 192.168.0.25]
- เกตเวย์: เราเตอร์ [IP 192.168.0.1]
- เว็บเซิร์ฟเวอร์: Nginx 1.6.2-5
- โดเมนจำลอง: www.tecmintlovesnginx.com และ www.nginxmeanspower.com
การติดตั้งเว็บเซิร์ฟเวอร์ Nginx
หากคุณยังไม่ได้ดำเนินการ โปรดติดตั้ง Nginx ก่อนดำเนินการต่อ หากคุณต้องการความช่วยเหลือในการเริ่มต้น การค้นหาอย่างรวดเร็วด้วย nginx ในไซต์นี้จะแสดงบทความหลายบทความในหัวข้อนี้ คลิกที่ไอคอนรูปแว่นขยายที่ด้านบนของหน้านี้และค้นหาคำหลัก nginx หากคุณไม่ทราบวิธีค้นหาบทความในไซต์นี้ ไม่ต้องกังวล เราได้เพิ่มลิงก์ไปยังบทความ nginx แล้ว เพียงดำเนินการและติดตั้งตามการแจกจ่าย Linux ของคุณ
- ติดตั้งและคอมไพล์ Nginx จากแหล่งที่มาใน RHEL/CentOS 7
- ติดตั้งเว็บเซิร์ฟเวอร์ Nginx บน Debian 8
- ติดตั้ง Nginx ด้วย MariaDB และ PHP/PHP-FPM บน Fedora 23
- ติดตั้ง Nginx Web Server บนเซิร์ฟเวอร์/เดสก์ท็อป Ubuntu 15.10
- รหัสผ่านป้องกันไดเรกทอรีเว็บไซต์ Nginx
จากนั้นเตรียมตัวให้พร้อมสำหรับบทช่วยสอนที่เหลือนี้ต่อ
การสร้างโฮสต์เสมือนตามชื่อใน Nginx
อย่างที่ฉันแน่ใจว่าคุณรู้อยู่แล้วว่าโฮสต์เสมือนคือเว็บไซต์ที่ให้บริการโดย Nginx ใน VPS บนคลาวด์หรือเซิร์ฟเวอร์กายภาพตัวเดียว อย่างไรก็ตาม ในเอกสาร Nginx คุณจะพบคำว่า "server block"
แทน แต่โดยพื้นฐานแล้วเป็นสิ่งเดียวกันที่เรียกโดยใช้ชื่อต่างกัน
ขั้นตอนแรกในการตั้งค่าโฮสต์เสมือนคือการสร้างบล็อกเซิร์ฟเวอร์หนึ่งบล็อกขึ้นไป (ในกรณีของเรา เราจะสร้างบล็อกเซิร์ฟเวอร์สองบล็อก หนึ่งบล็อกสำหรับแต่ละโดเมนจำลอง) ในไฟล์การกำหนดค่าหลัก (/etc/nginx/nginx.conf) หรือภายใน /etc/nginx/sites-available
แม้ว่าชื่อของไฟล์การกำหนดค่าในไดเร็กทอรีนี้ (sites-available) จะสามารถตั้งค่าเป็นอะไรก็ได้ที่คุณต้องการ แต่ก็เป็นความคิดที่ดีที่จะใช้ชื่อของโดเมน และนอกจากนี้ เรายังเลือกที่จะเพิ่ม .conf
ส่วนขยายเพื่อระบุว่าเป็นไฟล์การกำหนดค่า
บล็อกเซิร์ฟเวอร์เหล่านี้อาจค่อนข้างซับซ้อน แต่ในรูปแบบพื้นฐานจะประกอบด้วยเนื้อหาต่อไปนี้:
ใน /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
server {
listen 80;
server_name tecmintlovesnginx.com www.tecmintlovesnginx.com;
access_log /var/www/logs/tecmintlovesnginx.access.log;
error_log /var/www/logs/tecmintlovesnginx.error.log error;
root /var/www/tecmintlovesnginx.com/public_html;
index index.html index.htm;
}
ใน /etc/nginx/sites-available/nginxmeanspower.com.conf:
server {
listen 80;
server_name nginxmeanspower.com www.nginxmeanspower.com;
access_log /var/www/logs/nginxmeanspower.access.log;
error_log /var/www/logs/nginxmeanspower.error.log error;
root /var/www/nginxmeanspower.com/public_html;
index index.html index.htm;
}
คุณสามารถใช้บล็อกด้านบนเพื่อเริ่มตั้งค่าโฮสต์เสมือนของคุณ หรือคุณสามารถสร้างไฟล์ด้วยโครงกระดูกพื้นฐานจาก /etc/nginx/sites-available/default (Debian ) หรือ /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
CentOS และ RHEL
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 <nginx user> /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/
สำหรับแต่ละโฮสต์เสมือน (แทนที่
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tecmint loves Nginx</title>
</head>
<body>
<h1>Tecmint loves Nginx!</h1>
</body>
</html>
สุดท้าย ทดสอบการกำหนดค่า Nginx และเริ่มเว็บเซิร์ฟเวอร์ หากมีข้อผิดพลาดในการกำหนดค่า คุณจะได้รับแจ้งให้แก้ไข:
nginx -t && systemctl start nginx
และเพิ่มรายการต่อไปนี้ลงในไฟล์ /etc/hosts
ของคุณในเครื่องท้องถิ่นของคุณเป็นกลยุทธ์การแก้ปัญหาชื่อพื้นฐาน:
192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com
จากนั้นเปิดเว็บเบราว์เซอร์และไปที่ URL ที่แสดงด้านบน:
หากต้องการเพิ่มโฮสต์เสมือนใน Nginx เพียงทำซ้ำขั้นตอนที่อธิบายไว้ข้างต้นหลาย ๆ ครั้งตามต้องการ
โฮสต์เสมือนที่ใช้ IP ใน Nginx
ตรงกันข้ามกับโฮสต์เสมือน ตามชื่อ ซึ่งโฮสต์ทั้งหมดสามารถเข้าถึงได้ผ่านที่อยู่ IP เดียวกัน โฮสต์เสมือน ตามชื่อ ต้องการ IP:port
ที่แตกต่างกัน ผสมกัน
สิ่งนี้ทำให้เว็บเซิร์ฟเวอร์สามารถส่งคืนไซต์ต่าง ๆ ขึ้นอยู่กับที่อยู่ IP และพอร์ตที่ได้รับคำขอ เนื่องจากโฮสต์เสมือนแบบระบุชื่อทำให้เราได้เปรียบในการแบ่งปันที่อยู่ IP และพอร์ต จึงเป็นมาตรฐานสำหรับเว็บเซิร์ฟเวอร์ทั่วไป และควรเป็นตัวเลือกการตั้งค่า เว้นแต่ Nginx เวอร์ชันที่ติดตั้งของคุณไม่รองรับ การระบุชื่อเซิร์ฟเวอร์ (SNI) ไม่ว่าจะเป็นเพราะมันเป็นเวอร์ชันที่ล้าสมัยจริงๆ หรือเพราะมันถูกคอมไพล์โดยไม่มีตัวเลือกการคอมไพล์ –with-http_ssl_module
ถ้า,
nginx -V
ไม่ส่งคืนตัวเลือกที่ไฮไลต์ด้านล่าง:
คุณจะต้องอัปเดตเวอร์ชันของ Nginx หรือคอมไพล์ใหม่ ขึ้นอยู่กับวิธีการติดตั้งดั้งเดิมของคุณ สำหรับการคอมไพล์ Nginx ให้ทำตามบทความด้านล่าง:
- ติดตั้งและคอมไพล์ Nginx จากแหล่งที่มาใน RHEL/CentOS 7
สมมติว่าเราพร้อมแล้ว เราต้องทราบว่าข้อกำหนดเบื้องต้นอีกประการหนึ่งสำหรับโฮสต์เสมือน ที่ใช้ IP คือความพร้อมใช้งานของ IP ที่แยกกัน ไม่ว่าจะโดยการกำหนดให้กับอินเทอร์เฟซเครือข่ายที่แตกต่างกัน หรือผ่านการใช้เสมือน IP (หรือที่เรียกว่านามแฝง IP)
หากต้องการดำเนินการนามแฝง IP ใน Debian (สมมติว่าคุณใช้ eth0) ให้แก้ไข /etc/network/interfaces
ดังนี้:
เดเบียนและอนุพันธ์
auto eth0:1
iface eth0:1 inet static
address 192.168.0.25
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
address 192.168.0.26
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
ในตัวอย่างข้างต้น เราสร้าง NIC เสมือนสองตัวจาก eth0: eth0:1
(192.168.0.25) และ eth0:2
(192.168.0.26)
CentOS และ RHEL
ใน 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 restart networking
ถัดไป ทำการเปลี่ยนแปลงต่อไปนี้กับบล็อกเซิร์ฟเวอร์ที่กำหนดไว้ก่อนหน้านี้ในบทความนี้:
ใน /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
listen 192.168.0.25:80
ใน /etc/nginx/sites-available/nginxmeanspower.com.conf:
listen 192.168.0.26:80
สุดท้ายให้รีสตาร์ท Nginx เพื่อให้การเปลี่ยนแปลงมีผล
systemctl restart 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 ใน Nginx แม้ว่าคุณอาจต้องการใช้ตัวเลือกแรก แต่สิ่งสำคัญคือต้องรู้ว่าตัวเลือกอื่นยังคงมีอยู่หากคุณต้องการ เพียงให้แน่ใจว่าคุณได้ตัดสินใจนี้หลังจากพิจารณาข้อเท็จจริงที่ระบุไว้ในคู่มือนี้แล้ว
นอกจากนี้ คุณอาจต้องการบุ๊กมาร์กเอกสาร Nginx เนื่องจากคุ้มค่าและควรอ้างอิงถึงเอกสารเหล่านี้บ่อยๆ ในขณะที่สร้างบล็อกเซิร์ฟเวอร์ (คุณมีอยู่แล้ว – เรากำลังพูดถึงภาษา Nginx ในขณะนี้) และกำหนดค่าเอกสารเหล่านั้น คุณจะไม่เชื่อตัวเลือกทั้งหมดที่พร้อมใช้งานในการกำหนดค่าและปรับแต่งเว็บเซิร์ฟเวอร์ที่โดดเด่นนี้
เช่นเคย อย่าลังเลที่จะติดต่อเราโดยใช้แบบฟอร์มด้านล่างหากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้ เราหวังว่าจะได้รับการติดต่อจากคุณ และยินดีรับฟังความคิดเห็นของคุณเกี่ยวกับคู่มือนี้