ວິທີການຕັ້ງຊື່ໂຮດຕິ້ງແບບ 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 ແລະເຄື່ອງສະກັດຂອງມັນ.

<

  • ລະບົບປະຕິບັດການ: ເຊີເວີ້ 8 Jessie [IP 192.168.0.25]
  • ຄ່າຜ່ານປະຕູ: Router [IP 192.168.0.1]
  • Web Server: Nginx 1.6.2-5
  • ໂດເມນ Dummy: www.tecmintlovesnginx.com ແລະ www.nginxmeanspower.com.
  • ການຕິດຕັ້ງ Nginx Web Server

    ຖ້າທ່ານບໍ່ໄດ້ເຮັດແລ້ວ, ກະລຸນາຕິດຕັ້ງ Nginx ກ່ອນທີ່ຈະ ດຳ ເນີນການຕໍ່ໄປ. ຖ້າທ່ານຕ້ອງການຄວາມຊ່ວຍເຫຼືອໃນການເລີ່ມຕົ້ນ, ການຄົ້ນຫາໄວໆໃນ nginx ໃນເວັບໄຊທ໌້ນີ້ຈະສົ່ງຄືນຫລາຍບົດຂຽນໃນຫົວຂໍ້ນີ້ ກົດທີ່ໄອຄອນແກ້ວຂະຫຍາຍຢູ່ດ້ານເທິງຂອງ ໜ້າ ນີ້ແລະຄົ້ນຫາ ຄຳ ຄົ້ນ nginx. ຖ້າທ່ານບໍ່ຮູ້ວິທີການຄົ້ນຫາບົດຄວາມໃນເວັບໄຊທ໌ນີ້, ຢ່າກັງວົນຢູ່ທີ່ນີ້ພວກເຮົາໄດ້ເພີ່ມລິ້ງເຂົ້າໃນບົດຄວາມ nginx, ພຽງແຕ່ຕິດຕັ້ງແລະຕິດຕັ້ງມັນເທົ່າກັບການແຈກຈ່າຍ Linux ຂອງທ່ານ.

    <

  • ຕິດຕັ້ງແລະລວບລວມ Nginx ຈາກແຫຼ່ງຕ່າງໆໃນ RHEL/CentOS 7
  • ຕິດຕັ້ງ Nginx Web Server ເທິງ Debian 8
  • ຕິດຕັ້ງ Nginx ກັບ MariaDB ແລະ PHP/PHP-FPM ໃນ Fedora 23
  • ຕິດຕັ້ງ Nginx Web Server ເທິງ Ubuntu 15.10 Server/Desktop
  • ລະຫັດຜ່ານປົກປ້ອງລາຍຊື່ເວັບໄຊທ໌ Nginx
  • ຫຼັງຈາກນັ້ນ, ກຽມພ້ອມທີ່ຈະສືບຕໍ່ກັບສ່ວນທີ່ເຫຼືອຂອງບົດແນະ ນຳ ນີ້.

    ການສ້າງຊື່ໂຮດຕິ້ງແບບ 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, ປະຕິບັດຕາມບົດຂຽນຂ້າງລຸ່ມນີ້:

    <

  • ຕິດຕັ້ງແລະລວບລວມ Nginx ຈາກແຫຼ່ງຕ່າງໆໃນ RHEL/CentOS 7
  • ສົມມຸດວ່າພວກເຮົາດີທີ່ຈະໄປ, ພວກເຮົາຕ້ອງສັງເກດວ່າຄວາມຕ້ອງການອື່ນທີ່ ຈຳ ເປັນ ສຳ ລັບເຈົ້າພາບ 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 ທີ່ໂດດເດັ່ນນີ້.

    ດັ່ງທີ່ເຄີຍເຮັດ, ຢ່າລັງເລທີ່ຈະລຸດສາຍພວກເຮົາໂດຍໃຊ້ແບບຟອມລຸ່ມນີ້ຖ້າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນໃດໆກ່ຽວກັບບົດຄວາມນີ້ ພວກເຮົາຫວັງວ່າຈະໄດ້ຍິນຂ່າວຈາກທ່ານ, ແລະ ຄຳ ຄິດເຫັນຂອງທ່ານກ່ຽວກັບຄູ່ມືນີ້ແມ່ນຍິນດີທີ່ສຸດ.