ค้นหาเว็บไซต์

วิธีการตั้งค่าโฮสต์เสมือนตามชื่อและตาม IP (บล็อกเซิร์ฟเวอร์) ด้วย NGINX


ในระยะเวลาอันสั้นนับตั้งแต่ได้รับการพัฒนาและให้บริการ (มากกว่า 10 ปีเล็กน้อย) Nginx พบกับการเติบโตที่ยั่งยืนและมั่นคงในบรรดาเว็บเซิร์ฟเวอร์ เนื่องจากประสิทธิภาพสูงและการใช้หน่วยความจำต่ำ

เนื่องจาก Nginx เป็นซอฟต์แวร์โอเพ่นซอร์สฟรี จึงได้รับการยอมรับจากผู้ดูแลระบบเว็บเซิร์ฟเวอร์หลายพันรายทั่วโลก ไม่เพียงแต่ในเซิร์ฟเวอร์ Linux และ *nix เท่านั้น แต่ยังรวมถึงใน Microsoft Windows ด้วย

อย่าพลาด: โฮสติ้งเสมือนตามชื่อ Apache และตาม IP

สำหรับพวกเราที่คุ้นเคยกับ Apache มากที่สุด Nginx อาจมีช่วงการเรียนรู้ที่ค่อนข้างชัน (อย่างน้อยก็ในกรณีของฉัน) แต่จะคุ้มค่าอย่างแน่นอนเมื่อคุณตั้งค่าสองสามรายการ ของไซต์และเริ่มดูสถิติการเข้าชมและการใช้ทรัพยากร

ในบทความนี้ เราจะอธิบายวิธีใช้ Nginx เพื่อตั้งค่าโฮสติ้งเสมือน ตามชื่อ และ ตาม IP ใน CentOS/RHEL เซิร์ฟเวอร์ 7 และ Debian 8 และอนุพันธ์ เริ่มต้นด้วย Ubuntu 15.04 และส่วนแยก

สถานการณ์การทดสอบของเราสำหรับบทความนี้เป็นดังนี้:

  1. ระบบปฏิบัติการ: เซิร์ฟเวอร์ Debian 8 Jessie [IP 192.168.0.25]
  2. เกตเวย์: เราเตอร์ [IP 192.168.0.1]
  3. เว็บเซิร์ฟเวอร์: Nginx 1.6.2-5
  4. โดเมนจำลอง: www.tecmintlovesnginx.com และ www.nginxmeanspower.com

การติดตั้งเว็บเซิร์ฟเวอร์ Nginx

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

  1. ติดตั้งและคอมไพล์ Nginx จากแหล่งที่มาใน RHEL/CentOS 7
  2. ติดตั้งเว็บเซิร์ฟเวอร์ Nginx บน Debian 8
  3. ติดตั้ง Nginx ด้วย MariaDB และ PHP/PHP-FPM บน Fedora 23
  4. ติดตั้ง Nginx Web Server บนเซิร์ฟเวอร์/เดสก์ท็อป Ubuntu 15.10
  5. รหัสผ่านป้องกันไดเรกทอรีเว็บไซต์ 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//public_html สำหรับแต่ละโฮสต์เสมือน (แทนที่ ตามความจำเป็น) แก้ไขรหัสต่อไปนี้ตามความจำเป็น:

<!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 ให้ทำตามบทความด้านล่าง:

  1. ติดตั้งและคอมไพล์ 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 ในขณะนี้) และกำหนดค่าเอกสารเหล่านั้น คุณจะไม่เชื่อตัวเลือกทั้งหมดที่พร้อมใช้งานในการกำหนดค่าและปรับแต่งเว็บเซิร์ฟเวอร์ที่โดดเด่นนี้

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