ວິທີການຕັ້ງຊື່ໂຮດຕິ້ງແບບ virtual-based ແລະ IP-based (Server Blocks) ກັບ NGINX
ໃນໄລຍະເວລາທີ່ຂ້ອນຂ້າງສັ້ນຕັ້ງແຕ່ມັນຖືກພັດທະນາແລະເຮັດໃຫ້ສາມາດໃຊ້ໄດ້ (ບໍ່ເກີນ 10 ປີ), Nginx ໄດ້ປະສົບກັບການເຕີບໂຕທີ່ຍືນຍົງແລະ ໝັ້ນ ຄົງໃນບັນດາເຊີບເວີເວັບເພາະວ່າມັນມີປະສິດຕິພາບສູງແລະການ ນຳ ໃຊ້ຫນ່ວຍຄວາມ ຈຳ ໜ້ອຍ.
ນັບຕັ້ງແຕ່ Nginx ແມ່ນໂປແກຼມ Free ແລະ Open Source, ມັນໄດ້ຖືກຮັບຮອງໂດຍຜູ້ບໍລິຫານເວບໄຊທ໌ຫລາຍພັນແຫ່ງທົ່ວໂລກ, ບໍ່ພຽງແຕ່ຢູ່ໃນ Linux ແລະ * nix server ເທົ່ານັ້ນ, ແຕ່ກໍ່ຍັງຢູ່ໃນ Microsoft Windows.
ສຳ ລັບພວກເຮົາສ່ວນໃຫຍ່ທີ່ໃຊ້ກັບ Apache, Nginx ອາດຈະມີເສັ້ນໂຄ້ງການຮຽນຮູ້ທີ່ສູງຊັນ (ຢ່າງ ໜ້ອຍ ກໍ່ແມ່ນກໍລະນີຂອງຂ້ອຍ) ແຕ່ມັນແນ່ນອນວ່າມັນຈ່າຍເງິນເມື່ອທ່ານຕັ້ງສະຖານທີ່ສອງສາມແຫ່ງແລະເລີ່ມເຫັນສະຖິຕິການຈະລາຈອນແລະການ ນຳ ໃຊ້ຊັບພະຍາກອນ.
ໃນບົດຄວາມນີ້ພວກເຮົາຈະອະທິບາຍວິທີການໃຊ້ Nginx ເພື່ອຕັ້ງຄ່າໂຮດຕິ້ງເສມືນທີ່ມີຊື່ແລະ ip-based ໃນ CentOS/RHEL 7 ເຊີຟເວີແລະ Debian 8 ແລະອະນຸພັນ, ເລີ່ມຕົ້ນຈາກ Ubuntu 15.04 ແລະເຄື່ອງສະກັດຂອງມັນ.
<
ການຕິດຕັ້ງ Nginx Web Server
ຖ້າທ່ານບໍ່ໄດ້ເຮັດແລ້ວ, ກະລຸນາຕິດຕັ້ງ Nginx ກ່ອນທີ່ຈະ ດຳ ເນີນການຕໍ່ໄປ. ຖ້າທ່ານຕ້ອງການຄວາມຊ່ວຍເຫຼືອໃນການເລີ່ມຕົ້ນ, ການຄົ້ນຫາໄວໆໃນ nginx ໃນເວັບໄຊທ໌້ນີ້ຈະສົ່ງຄືນຫລາຍບົດຂຽນໃນຫົວຂໍ້ນີ້ ກົດທີ່ໄອຄອນແກ້ວຂະຫຍາຍຢູ່ດ້ານເທິງຂອງ ໜ້າ ນີ້ແລະຄົ້ນຫາ ຄຳ ຄົ້ນ nginx. ຖ້າທ່ານບໍ່ຮູ້ວິທີການຄົ້ນຫາບົດຄວາມໃນເວັບໄຊທ໌ນີ້, ຢ່າກັງວົນຢູ່ທີ່ນີ້ພວກເຮົາໄດ້ເພີ່ມລິ້ງເຂົ້າໃນບົດຄວາມ nginx, ພຽງແຕ່ຕິດຕັ້ງແລະຕິດຕັ້ງມັນເທົ່າກັບການແຈກຈ່າຍ Linux ຂອງທ່ານ.
<
ຫຼັງຈາກນັ້ນ, ກຽມພ້ອມທີ່ຈະສືບຕໍ່ກັບສ່ວນທີ່ເຫຼືອຂອງບົດແນະ ນຳ ນີ້.
ການສ້າງຊື່ໂຮດຕິ້ງແບບ Virtual-based ໃນ Nginx
ດັ່ງທີ່ຂ້ອຍແນ່ໃຈວ່າເຈົ້າຮູ້ແລ້ວ, ເຈົ້າພາບເສມືນແມ່ນເວບໄຊທ໌ທີ່ໃຫ້ບໍລິການໂດຍ Nginx ໃນ Cloud VPS ດຽວຫລື server server. ເຖິງຢ່າງໃດກໍ່ຕາມ, ໃນເອກະສານ Nginx ທ່ານຈະເຫັນ ຄຳ ວ່າ "server block" ແທນ, ແຕ່ໂດຍພື້ນຖານແລ້ວມັນແມ່ນສິ່ງດຽວກັນທີ່ເອີ້ນໂດຍຊື່ຕ່າງກັນ.
ຂັ້ນຕອນ ທຳ ອິດໃນການຕັ້ງຄ່າໂຮດເສມືນຄືການສ້າງ server ຫລື ໜຶ່ງ server ຂື້ນໄປ (ໃນກໍລະນີຂອງພວກເຮົາພວກເຮົາຈະສ້າງສອງ, ໜຶ່ງ ສຳ ລັບໂດເມນ dummy) ໃນເອກະສານການຕັ້ງຄ່າຕົ້ນຕໍ (/etc/nginx/nginx.conf) ຫຼືພາຍໃນ/etc/nginx/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
# chgrp nginx /etc/nginx/sites-available/tecmintlovesnginx.com.conf # chgrp nginx /etc/nginx/sites-available/nginxmeanspower.com.conf
ເມື່ອທ່ານເຮັດ ສຳ ເລັດແລ້ວ, ທ່ານຄວນລຶບເອກະສານຕົວຢ່າງຫຼືປ່ຽນຊື່ໃຫ້ເປັນສິ່ງອື່ນເພື່ອຫລີກລ້ຽງຄວາມສັບສົນຫລືຄວາມຂັດແຍ້ງ.
ກະລຸນາຮັບຊາບວ່າທ່ານຍັງຈະຕ້ອງສ້າງໄດເລກະທໍລີ ສຳ ລັບບັນທຶກ (/var/www/log
) ແລະໃຫ້ຜູ້ໃຊ້ 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 ແລະເລີ່ມຕົ້ນ web server. ຖ້າມີຂໍ້ຜິດພາດໃດໆໃນການຕັ້ງຄ່າ, ທ່ານຈະໄດ້ຮັບການແນະ ນຳ ໃຫ້ແກ້ໄຂພວກມັນ:
# nginx -t && systemctl start nginx
ແລະເພີ່ມລາຍການຕໍ່ໄປນີ້ໃສ່ໃນແຟ້ມ /etc/hosts
ຂອງທ່ານໃນເຄື່ອງທ້ອງຖິ່ນຂອງທ່ານເປັນຍຸດທະສາດການແກ້ໄຂບັນຫາຊື່ພື້ນຖານ:
192.168.0.25 tecmintlovesnginx.com 192.168.0.25 nginxmeanspower.com
ຈາກນັ້ນເປີດຕົວທ່ອງເວັບແລະເຂົ້າໄປທີ່ URL ທີ່ລະບຸຢູ່ຂ້າງເທິງ:
ເພື່ອເພີ່ມເຈົ້າພາບເສມືນຫລາຍຂື້ນໃນ Nginx, ພຽງແຕ່ເຮັດຊ້ ຳ ອີກຂັ້ນຕອນທີ່ໄດ້ກ່າວມາຂ້າງເທິງນີ້ຫລາຍເທົ່າທີ່ຕ້ອງການ.
ໂຮດຕິ້ງ Virtual Virtual ທີ່ໃຊ້ IP ໃນ Nginx
ກົງກັນຂ້າມກັບຜູ້ໃຫ້ບໍລິການເສມືນໂດຍອີງໃສ່ຊື່ທີ່ຜູ້ໃຫ້ບໍລິການທຸກຄົນສາມາດເຂົ້າເຖິງໄດ້ໂດຍຜ່ານທີ່ຢູ່ IP ດຽວກັນ, IP ທີ່ໃຊ້ IP ທີ່ອີງໃສ່ IP ຕ້ອງການການປະສົມປະສານລະຫັດ IP ທີ່ແຕກຕ່າງກັນໃນແຕ່ລະ IP.
ນີ້ອະນຸຍາດໃຫ້ເຄື່ອງແມ່ຂ່າຍເວັບໄຊທ໌້ກັບຄືນເວັບໄຊທ໌ທີ່ແຕກຕ່າງກັນໂດຍອີງຕາມທີ່ຢູ່ IP ແລະພອດທີ່ໄດ້ຮັບການຮ້ອງຂໍ. ນັບຕັ້ງແຕ່ເຈົ້າພາບ virtual ທີ່ອີງໃສ່ຊື່ໄດ້ໃຫ້ພວກເຮົາມີປະໂຫຍດໃນການແບ່ງປັນທີ່ຢູ່ IP ແລະພອດ, ພວກມັນແມ່ນມາດຕະຖານ ສຳ ລັບເຄື່ອງແມ່ຂ່າຍເວັບທີ່ມີຈຸດປະສົງທົ່ວໄປແລະຄວນເປັນຕົວເລືອກການຕັ້ງຄ່າເວັ້ນເສຍແຕ່ວ່າ Nginx ທີ່ຕິດຕັ້ງຂອງທ່ານບໍ່ສະ ໜັບ ສະ ໜູນ Server Name Indication (SNI) , ເພາະວ່າມັນເປັນຮຸ່ນທີ່ລ້າສະ ໄໝ ແທ້ໆ, ຫລືຍ້ອນວ່າມັນຖືກລວບລວມໂດຍບໍ່ມີຕົວເລືອກ ithwith-http_ssl_module ລວບລວມ.
ຖ້າ,
# nginx -V
ບໍ່ໄດ້ສົ່ງຄືນຕົວເລືອກທີ່ເນັ້ນຢູ່ດ້ານລຸ່ມ:
ທ່ານຈະຕ້ອງໄດ້ປັບປຸງ Nginx ເວີຊັ່ນ ໃໝ່ ຂອງທ່ານຫຼືຂຽນ ໃໝ່, ອີງຕາມວິທີການຕິດຕັ້ງເດີມຂອງທ່ານ. ສຳ ລັບການລວບລວມ Nginx, ປະຕິບັດຕາມບົດຂຽນຂ້າງລຸ່ມນີ້:
<
ສົມມຸດວ່າພວກເຮົາດີທີ່ຈະໄປ, ພວກເຮົາຕ້ອງສັງເກດວ່າຄວາມຕ້ອງການອື່ນທີ່ ຈຳ ເປັນ ສຳ ລັບເຈົ້າພາບ virtual ທີ່ອີງໃສ່ IP ແມ່ນການມີ IP ທີ່ແຍກຕ່າງຫາກ - ໂດຍການມອບ ໝາຍ ໃຫ້ພວກເຂົາເຂົ້າໄປໃນອິນເຕີເຟດເຄືອຂ່າຍທີ່ແຕກຕ່າງກັນ, ຫຼືຜ່ານການ ນຳ ໃຊ້ IP ຂອງ virtual (ເຊິ່ງເອີ້ນວ່າ IP aliasing ).
ເພື່ອປະຕິບັດການປ່ຽນແປງ IP ໃນ Debian (ສົມມຸດວ່າທ່ານ ກຳ ລັງໃຊ້ eth0), ດັດແກ້ /etc/network/ອິນເຕີເຟດ
ດັ່ງຕໍ່ໄປນີ້:
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
ໃນຕົວຢ່າງຂ້າງເທິງນີ້ພວກເຮົາສ້າງ NICs virtual ສອງອັນອອກຈາກ 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 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
ແລະຢ່າລືມທີ່ຈະປັບປຸງລະຫັດທ້ອງຖິ່ນ/ອື່ນໆ/ໂຮດຕິ້ງຂອງທ່ານໃຫ້ ເໝາະ ສົມ:
192.168.0.25 tecmintlovesnginx.com 192.168.0.26 nginxmeanspower.com
ດັ່ງນັ້ນ, ແຕ່ລະ ຄຳ ຮ້ອງຂໍເຖິງ 192.168.0.25 ແລະ 192.168.0.26 ຢູ່ port 80 ຈະກັບຄືນ tecmintlovesnginx.com ແລະ nginxmeanspower.com ຕາມ ລຳ ດັບ:
ດັ່ງທີ່ທ່ານສາມາດເຫັນໃນຮູບພາບຂ້າງເທິງ, ຕອນນີ້ທ່ານມີສອງໂຮດຕິ້ງທີ່ໃຊ້ IP ໂດຍໃຊ້ NIC ດຽວຢູ່ໃນເຊີບເວີຂອງທ່ານໂດຍມີສອງຊື່ IP ທີ່ແຕກຕ່າງກັນ.
ບົດສະຫຼຸບ
ໃນບົດແນະ ນຳ ນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕັ້ງຄ່າທັງ virtual host ທີ່ອີງໃສ່ຊື່ແລະ IP ທີ່ຢູ່ Nginx. ເຖິງແມ່ນວ່າທ່ານອາດຈະຕ້ອງການໃຊ້ຕົວເລືອກ ທຳ ອິດ, ມັນເປັນສິ່ງ ສຳ ຄັນທີ່ຈະຮູ້ວ່າທາງເລືອກອື່ນຍັງມີຢູ່ຖ້າທ່ານຕ້ອງການ - ພຽງແຕ່ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ຕັດສິນໃຈນີ້ຫຼັງຈາກພິຈາລະນາຂໍ້ເທັດຈິງທີ່ລະບຸໄວ້ໃນຄູ່ມືນີ້.
ນອກຈາກນັ້ນ, ທ່ານອາດຈະຕ້ອງການທີ່ຈະ ໝາຍ ເອົາ Nginx docs ເພາະວ່າມັນສົມຄວນແລະອ້າງອີງເຖິງພວກມັນເລື້ອຍໆໃນຂະນະທີ່ສ້າງ server server (ຢູ່ທີ່ນັ້ນທ່ານມີມັນ - ພວກເຮົາ ກຳ ລັງເວົ້າຢູ່ໃນພາສາ Nginx ດຽວນີ້) ແລະ ກຳ ນົດພວກມັນຢູ່. ທ່ານຈະບໍ່ເຊື່ອວ່າຕົວເລືອກທັງ ໝົດ ທີ່ມີຢູ່ໃນການຕັ້ງຄ່າແລະປັບແຕ່ງ web server ທີ່ໂດດເດັ່ນນີ້.
ດັ່ງທີ່ເຄີຍເຮັດ, ຢ່າລັງເລທີ່ຈະລຸດສາຍພວກເຮົາໂດຍໃຊ້ແບບຟອມລຸ່ມນີ້ຖ້າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນໃດໆກ່ຽວກັບບົດຄວາມນີ້ ພວກເຮົາຫວັງວ່າຈະໄດ້ຍິນຂ່າວຈາກທ່ານ, ແລະ ຄຳ ຄິດເຫັນຂອງທ່ານກ່ຽວກັບຄູ່ມືນີ້ແມ່ນຍິນດີທີ່ສຸດ.