วิธีการตั้งค่าบล็อกเซิร์ฟเวอร์ Nginx (โฮสต์เสมือน) บน Ubuntu 20.04
ในบางครั้ง คุณอาจต้องโฮสต์มากกว่าหนึ่งโดเมนหรือเว็บไซต์บนเว็บเซิร์ฟเวอร์ Nginx ของคุณ เพื่อให้สิ่งนี้เกิดขึ้น จำเป็นต้องกำหนดค่า Server Block (Virtual Hosts) เพื่อสรุปการกำหนดค่าทั้งหมดของโดเมนของคุณ บล็อกเซิร์ฟเวอร์ Nginx มีความหมายเหมือนกันกับไฟล์โฮสต์เสมือน Apache และมีจุดประสงค์เดียวกัน
หัวข้อนี้สาธิตวิธีการตั้งค่าบล็อกเซิร์ฟเวอร์ Nginx บน Ubuntu 20.04
ข้อกำหนดเบื้องต้น:
- บันทึก
A
ที่กำหนดโดยผู้ให้บริการโฮสต์ชื่อโดเมนของคุณ ระเบียนA
คือระเบียน DNS ที่ชี้ชื่อโดเมนไปยังที่อยู่ IP ของเซิร์ฟเวอร์สาธารณะ สำหรับคู่มือนี้ เราจะใช้ชื่อโดเมนcrazytechgeek.info
เพื่อจุดประสงค์ในการอธิบาย - ติดตั้งเซิร์ฟเวอร์ Nginx หรือ LEMP Stack บนอินสแตนซ์ Ubuntu 20.04 LTS
- ผู้ใช้เข้าสู่ระบบที่มีสิทธิ์ Sudo
เมื่อมีคุณสมบัติตรงตามข้อกำหนดทั้งหมดแล้ว มาดูวิธีตั้งค่าบล็อกเซิร์ฟเวอร์ Nginx ใน Ubuntu กันดีกว่า
ขั้นตอนที่ 1: สร้างไดเรกทอรีรูทเอกสาร Nginx
ในการเริ่มต้น เราจะสร้างไดเร็กทอรีแยกต่างหากสำหรับโดเมนของเราซึ่งจะมีการตั้งค่าทั้งหมดที่เกี่ยวข้องกับโดเมน
sudo mkdir -p /var/www/crazytechgeek.info/html
จากนั้น กำหนดความเป็นเจ้าของไดเรกทอรีโดยใช้ตัวแปรสภาพแวดล้อม $USER
สิ่งนี้จะกำหนดความเป็นเจ้าของไดเรกทอรีให้กับผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน ตรวจสอบให้แน่ใจว่าคุณเข้าสู่ระบบโดยใช้บัญชีผู้ใช้ปกติและไม่ใช่ในฐานะรูท
sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
ถัดไป กำหนดสิทธิ์ที่เหมาะสมให้กับไดเร็กทอรี โดยให้สิทธิ์ทั้งหมดแก่ผู้ใช้ที่เข้าสู่ระบบ (อ่าน เขียน และดำเนินการ) และกลุ่มและผู้ใช้รายอื่นมีสิทธิ์อ่านและดำเนินการเท่านั้น
sudo chmod -R 755 /var/www/crazytechgeek.info
ด้วยการกำหนดค่าสิทธิ์ไดเรกทอรีและความเป็นเจ้าของอย่างถูกต้อง เราจำเป็นต้องสร้างหน้าเว็บตัวอย่างสำหรับโดเมน
ขั้นตอนที่ 2: สร้างหน้าตัวอย่างสำหรับโดเมน
ในขั้นตอนนี้ เราจะสร้างไฟล์ index.html
เพื่อการทดสอบ ไฟล์นี้จะให้บริการเนื้อหาที่จะแสดงบนเว็บเบราว์เซอร์เมื่อมีการเรียกโดเมนบนเบราว์เซอร์
sudo vim /var/www/crazytechgeek.info/html/index.html
วางเนื้อหา HTML ต่อไปนี้
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Bravo! Your server block is working as expected!</h1>
</body>
</html>
บันทึกและออกจากไฟล์การกำหนดค่า
ขั้นตอนที่ 3: สร้างบล็อกเซิร์ฟเวอร์ Nginx ใน Ubuntu
บล็อกเซิร์ฟเวอร์ Nginx อยู่ในไดเร็กทอรี /etc/nginx/sites-available
บล็อกเซิร์ฟเวอร์ Nginx เริ่มต้นคือ /etc/nginx/sites-available/default
ซึ่งให้บริการไฟล์ HTML เริ่มต้นที่ /var/www/html/index.nginx-debian.html .
ในกรณีของเรา เราจำเป็นต้องสร้างบล็อกเซิร์ฟเวอร์ที่จะให้บริการเนื้อหาในไฟล์ index.html
ที่เราสร้างไว้ก่อนหน้านี้
ดังนั้นให้สร้างไฟล์บล็อกเซิร์ฟเวอร์ที่แสดง
sudo vim /etc/nginx/sites-available/crazytechgeek.info
วางเนื้อหาด้านล่าง:
server {
listen 80;
listen [::]:80;
root /var/www/crazytechgeek.info/html;
index index.html index.htm index.nginx-debian.html;
server_name crazytechgeek.info www.crazytechgeek.info;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/crazytechgeek.info.access.log;
error_log /var/log/nginx/crazytechgeek.info.error.log;
}
บันทึกและออกจากไฟล์.
ขั้นตอนที่ 4: เปิดใช้งาน Nginx Server Block ใน Ubuntu
หากต้องการเปิดใช้งานบล็อกเซิร์ฟเวอร์ Nginx คุณต้องเชื่อมโยงบล็อกดังกล่าวกับไดเร็กทอรี /etc/nginx/sites-enabled/
ดังที่แสดง
sudo ln -s /etc/nginx/sites-available/crazytechgeek.info /etc/nginx/sites-enabled/
ณ จุดนี้เราเกือบเสร็จแล้ว อย่างไรก็ตาม ควรตรวจสอบให้แน่ใจว่าการกำหนดค่าทั้งหมดเป็นไปตามลำดับ โดยดำเนินการคำสั่ง:
sudo nginx -t
หากคุณทำตามขั้นตอนของเราอย่างถูกต้อง คุณควรได้รับผลลัพธ์ที่แสดง:
สุดท้าย ให้รีสตาร์ท Nginx เพื่อให้การเปลี่ยนแปลงที่ทำกับไฟล์การกำหนดค่ามีผล
sudo systemctl restart Nginx
จากนั้นตรวจสอบว่า Nginx ทำงานอยู่หรือไม่โดยรันคำสั่งที่แสดง:
sudo systemctl status Nginx
ขั้นตอนที่ 5: ทดสอบ Nginx Server Block ใน Ubuntu
เพื่อยืนยันว่าบล็อกเซิร์ฟเวอร์ทำงานตามที่คาดไว้และให้บริการเนื้อหาในไดเร็กทอรี /var/www/crazytechgeek.info
ให้เปิดเว็บเบราว์เซอร์และเรียกดูชื่อโดเมนเซิร์ฟเวอร์ของคุณ:
http://domain-name
คุณควรได้รับเนื้อหาที่อยู่ในไฟล์ HTML ในบล็อกเซิร์ฟเวอร์ของคุณดังที่แสดง
บทสรุป
ในคู่มือนี้ เราได้แสดงวิธีตั้งค่าบล็อกเซิร์ฟเวอร์ Nginx โดยใช้โดเมนเดียวบน Ubuntu Linux คุณสามารถทำซ้ำขั้นตอนเดียวกันสำหรับโดเมนที่แตกต่างกันและยังคงได้รับผลลัพธ์เดียวกัน เราหวังว่าคู่มือนี้จะมีข้อมูลเชิงลึก