ວິທີການເກັບຂໍ້ມູນເນື້ອຫາໃນ NGINX


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

ທ່ານສາມາດໃຊ້ NGINX ເພື່ອເລັ່ງເຄື່ອງແມ່ຂ່າຍທີ່ມາໃນທ້ອງຖິ່ນໂດຍການຕັ້ງຄ່າມັນເພື່ອເກັບຂໍ້ມູນການຕອບຮັບຈາກເຄື່ອງແມ່ຂ່າຍທີ່ຢູ່ເບື້ອງເທິງແລະຍັງສາມາດສ້າງເຄື່ອງແມ່ຂ່າຍຂອບ ສຳ ລັບເຄືອຂ່າຍການຈັດສົ່ງເນື້ອຫາ (CDNs). NGINX ມີອໍານາດສູງສຸດຂອງ CDN ທີ່ໃຫຍ່ທີ່ສຸດ.

ເມື່ອຕັ້ງຄ່າເປັນ cache, NGINX ຈະ:

  • cache ເນື້ອຫາແບບເຄື່ອນໄຫວແລະແບບເຄື່ອນໄຫວ.
  • ປັບປຸງການປະຕິບັດເນື້ອຫາແບບເຄື່ອນໄຫວດ້ວຍການ ນຳ ໃຊ້ຖານຄວາມ ຈຳ ແບບຈຸລະພາກ.
  • ໃຫ້ບໍລິການເນື້ອຫາທີ່ບໍ່ຖືກຕ້ອງໃນຂະນະທີ່ ກຳ ລັງປັບປຸງໃນພື້ນຫລັງເພື່ອໃຫ້ມີປະສິດຕິພາບດີຂຶ້ນ
  • override ຫຼືຕັ້ງ headers-Cache-Control, ແລະອື່ນໆ.

ໃນບົດຂຽນນີ້, ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີການຕັ້ງຄ່າ NGINX ເປັນ Content Caching ໃນ Linux ເພື່ອເຮັດໃຫ້ເຄື່ອງແມ່ຂ່າຍເວັບຂອງທ່ານເຮັດວຽກໄດ້ດີທີ່ສຸດເທົ່າທີ່ຈະເປັນໄປໄດ້.

ທ່ານຄວນຕິດຕັ້ງ NGINX ຢູ່ໃນເຊີຟເວີ Linux ຂອງທ່ານ, ຖ້າບໍ່ເຮັດຕາມ ຄຳ ແນະ ນຳ ເຫຼົ່ານີ້ເພື່ອຕິດຕັ້ງ Nginx:

  • ວິທີການຕິດຕັ້ງ Nginx ໃນ CentOS 8
  • ວິທີການຕິດຕັ້ງ Nginx ໃນ CentOS 7

Cache Static Content ກ່ຽວກັບ Nginx

ເນື້ອຫາທີ່ສະຖິດແມ່ນເນື້ອໃນຂອງເວບໄຊທ໌ທີ່ຍັງຄົງຄືເກົ່າ (ບໍ່ປ່ຽນແປງ) ຜ່ານ ໜ້າ ຕ່າງໆ. ຕົວຢ່າງຂອງເນື້ອຫາທີ່ສະຖິດລວມມີເອກະສານເຊັ່ນ: ຮູບພາບ, ວິດີໂອ, ເອກະສານ; ເອກະສານ CSS, ແລະເອກະສານ JavaScript.

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

ການຕັ້ງຄ່າຕົວຢ່າງຕໍ່ໄປນີ້ແມ່ນການເດີນທາງທີ່ດີ, ພຽງແຕ່ປ່ຽນ www.example.com ດ້ວຍ URL ຂອງຊື່ເວັບໄຊທ໌ຂອງທ່ານແລະເຮັດການດັດແປງ ສຳ ລັບລະບົບຊື່ອື່ນໆຕາມຄວາມ ເໝາະ ສົມ.

server {
    # substitute your web server's URL for www.example.com
    server_name www.example.com;
    root /var/www/example.com/htdocs;
    index index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        try_files $uri =404;
        include fastcgi_params;
        # substitute the socket, or address and port, of your WordPress server
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        #fastcgi_pass 127.0.0.1:9000;
 	}   

    location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg
                  |jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid
                  |midi|wav|bmp|rtf)$ {
        expires max;
        log_not_found off;
        access_log off;
    }
}

ເນື້ອຫາ Cache Dynamic ໃນ Nginx

NGINX ໃຊ້ cache ທີ່ຄົງຄ້າງຈາກ disk ທີ່ຕັ້ງຢູ່ບ່ອນໃດບ່ອນ ໜຶ່ງ ໃນລະບົບແຟ້ມເອກະສານທ້ອງຖິ່ນ. ດັ່ງນັ້ນເລີ່ມຕົ້ນໂດຍການສ້າງໄດເລກະທໍລີແຜ່ນທ້ອງຖິ່ນ ສຳ ລັບການເກັບຮັກສາເນື້ອຫາທີ່ຖືກເກັບໄວ້.
# mkdir -p/var/cache/nginx

ຕໍ່ໄປ, ກຳ ນົດຄວາມເປັນເຈົ້າຂອງທີ່ ເໝາະ ສົມໃສ່ໃນຖານຄວາມ ຈຳ. ມັນຄວນຈະເປັນເຈົ້າຂອງໂດຍຜູ້ໃຊ້ NGINX (nginx) ແລະກຸ່ມ (nginx) ດັ່ງຕໍ່ໄປນີ້.

# chown nginx:nginx /var/cache/nginx

ຕອນນີ້ ດຳ ເນີນການຕໍ່ໄປເພື່ອເບິ່ງວິທີການເປີດໃຊ້ເນື້ອຫາແບບເຄື່ອນໄຫວໃນ Nginx ໃນພາກລຸ່ມນີ້.

ເປີດໃຊ້ແຄດ FastCGI ໃນ NGINX

FastCGI (ຫຼື FCGI) ແມ່ນໂປໂຕຄອນທີ່ຖືກ ນຳ ໃຊ້ຢ່າງກວ້າງຂວາງ ສຳ ລັບການ ນຳ ໃຊ້ໂປແກຼມໂຕ້ຕອບແບບໂຕ້ຕອບເຊັ່ນ PHP ກັບເຄື່ອງແມ່ຂ່າຍເວັບຕ່າງໆເຊັ່ນ NGINX. ມັນແມ່ນການຂະຫຍາຍຂອງ CGI (Common Gateway Interface).

ປະໂຫຍດຕົ້ນຕໍຂອງ FCGI ແມ່ນວ່າມັນຄຸ້ມຄອງການຮ້ອງຂໍ CGI ຫຼາຍຢ່າງໃນຂັ້ນຕອນດຽວ. ຖ້າບໍ່ມີມັນ, webserver ຕ້ອງເປີດຂະບວນການ ໃໝ່ (ທີ່ຕ້ອງຄວບຄຸມ, ດຳ ເນີນການຮ້ອງຂໍແລະປິດ) ສຳ ລັບທຸກໆ ຄຳ ຮ້ອງຂໍຂອງລູກຄ້າທີ່ຕ້ອງການບໍລິການ.

ເພື່ອປະມວນຜົນສະຄິບ PHP ໃນການຈັດວາງ LEMP stack, NGINX ໃຊ້ FPM (FastCGI Process Manager) ຫຼື PHP-FPM, ການປະຕິບັດ PHP FastCGI ທີ່ເປັນທີ່ນິຍົມ. ເມື່ອຂະບວນການ PHP-FPM ກຳ ລັງເຮັດວຽກ, NGINX ຖືກຕັ້ງຄ່າໃຫ້ກັບການຮ້ອງຂໍຕົວແທນໃຫ້ມັນເພື່ອການປຸງແຕ່ງ. ດັ່ງນັ້ນ NGINX ຍັງສາມາດໄດ້ຮັບການຕັ້ງຄ່າໃຫ້ cache ການຕອບຮັບຈາກ server-application backend ຂອງ PHP-FPM.

ພາຍໃຕ້ NGINX, ຖານຄວາມ ຈຳ ຂອງເນື້ອຫາຂອງ FastCGI ຖືກປະກາດໂດຍໃຊ້ ຄຳ ສັ່ງທີ່ເອີ້ນວ່າ fastcgi_cache_path ໃນລະດັບສູງສຸດ http {} ສະພາບການ, ພາຍໃນໂຄງສ້າງການຕັ້ງຄ່າ NGINX. ນອກນັ້ນທ່ານຍັງສາມາດເພີ່ມ fastcgi_cache_key ທີ່ ກຳ ນົດກຸນແຈ (ຂໍລະບຸຕົວຕົນ) ສຳ ລັບຖານຄວາມ ຈຳ.

ນອກ ເໜືອ ຈາກນີ້, ເພື່ອອ່ານສະຖານະພາບຂອງ cache ທີ່ຢູ່ເບື້ອງເທິງ, ໃຫ້ເພີ່ມ ຄຳ ແນະ ນຳ add -header X-Cache-Status ພາຍໃນສະພາບການ http {} - ນີ້ມີປະໂຫຍດ ສຳ ລັບຈຸດປະສົງການແກ້ໄຂ.

ສົມມຸດວ່າເອກະສານການຕັ້ງຄ່າບລັອກເຊີຟເວີຂອງເວບໄຊທ໌ຂອງທ່ານຕັ້ງຢູ່ /etc/nginx/conf.d/testapp.conf ຫຼື /etc/nginx/sites- ສາມາດໃຊ້ໄດ້/testapp.conf (ພາຍໃຕ້ Ubuntu ແລະອະນຸພັນຂອງມັນ), ເປີດເອກະສານດັດແກ້ແລະເພີ່ມ ສາຍຕໍ່ໄປນີ້ຢູ່ເທິງສຸດຂອງເອກະສານ.

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHEZONE:10m; inactive=60m max_size=40m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
add_header X-Cache $upstream_cache_status;

ຄຳ ສັ່ງແນະ ນຳ fastcgi_cache_path ລະບຸ ຈຳ ນວນຕົວ ກຳ ນົດທີ່ມີດັ່ງນີ້:

  • /var/cache/nginx - ເສັ້ນທາງສູ່ໄດເລກະທໍລີແຜ່ນທ້ອງຖິ່ນ ສຳ ລັບ cache.
  • ລະດັບ - ກຳ ນົດລະດັບ ລຳ ດັບຂອງຖານຄວາມ ຈຳ, ມັນຕັ້ງລະບົບ ລຳ ດັບໄດເລກະທໍລີສອງລະດັບຢູ່ພາຍໃຕ້/var/cache/nginx.
  • key_zone (ຊື່: ຂະ ໜາດ) - ຊ່ວຍໃຫ້ມີການສ້າງເຂດຄວາມ ຈຳ ທີ່ແບ່ງປັນເຊິ່ງທຸກກະແຈທີ່ໃຊ້ງານແລະຂໍ້ມູນກ່ຽວກັບຂໍ້ມູນ (ເມຕາ) ຖືກເກັບໄວ້. ໃຫ້ສັງເກດວ່າການເກັບຮັກສາກະແຈຕ່າງໆໃນ ໜ່ວຍ ຄວາມ ຈຳ ເຮັດໃຫ້ຂັ້ນຕອນການກວດສອບໄວຂື້ນ, ໂດຍການເຮັດໃຫ້ NGINX ສາມາດ ກຳ ນົດໄດ້ວ່າ MISS ຫຼື HIT, ໂດຍບໍ່ກວດສອບສະຖານະໃນ disk.
  • ບໍ່ມີປະໂຫຍດ - ລະບຸ ຈຳ ນວນເວລາຫຼັງຈາກທີ່ເກັບຂໍ້ມູນທີ່ບໍ່ເຂົ້າເຖິງໃນຊ່ວງເວລາທີ່ຖືກ ກຳ ນົດຈະຖືກລຶບອອກຈາກບ່ອນເກັບຂໍ້ມູນໂດຍບໍ່ ຄຳ ນຶງເຖິງຄວາມສົດຂອງມັນ. ມູນຄ່າ 60m ໃນການຕັ້ງຄ່າຕົວຢ່າງຂອງພວກເຮົາ ໝາຍ ເຖິງແຟ້ມທີ່ບໍ່ສາມາດເຂົ້າເຖິງໄດ້ຫຼັງຈາກ 60 ຈະຖືກລຶບອອກຈາກບ່ອນເກັບມ້ຽນ.
  • max_size - ລະບຸຂະ ໜາດ ສູງສຸດຂອງ cache. ມີຕົວ ກຳ ນົດເພີ່ມເຕີມທີ່ທ່ານສາມາດ ນຳ ໃຊ້ຢູ່ທີ່ນີ້ (ອ່ານເອກະສານ NGINX ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ).

ຕົວແປຕ່າງໆທີ່ຢູ່ໃນ ຄຳ ສັ່ງແນະ ນຳ ແມ່ນອະທິບາຍໄວ້ຂ້າງລຸ່ມນີ້.

NGINX ໃຊ້ພວກມັນໃນການຄິດໄລ່ລະຫັດກຸນແຈ (ຕົວລະບຸຕົວຕົນ) ຂອງ ຄຳ ຮ້ອງຂໍ. ສິ່ງທີ່ ສຳ ຄັນ, ເພື່ອສົ່ງ ຄຳ ຕອບທີ່ຖືກເກັບໄວ້ໃຫ້ກັບລູກຄ້າ, ຄຳ ຮ້ອງຂໍຕ້ອງມີຫຼັກດຽວກັນກັບ ຄຳ ຕອບທີ່ຖືກເກັບໄວ້.

  • $ scheme - ແບບແຜນການຮ້ອງຂໍ, HTTP ຫຼື HTTPS.
  • $ request_method - ວິທີການຮ້ອງຂໍ, ໂດຍປົກກະຕິແລ້ວ“ GET” ຫຼື“ POST”.
  • $ host - ນີ້ສາມາດເປັນຊື່ໂຮດຈາກເສັ້ນ ຄຳ ຂໍ, ຫຼືຊື່ໂຮດຈາກພາກສະ ໜາມ ຫົວຂໍ້ "ໂຮດຕິ້ງ", ຫຼືຊື່ຂອງເຄື່ອງແມ່ຂ່າຍທີ່ກົງກັບ ຄຳ ຂໍ, ຕາມ ລຳ ດັບຄວາມ ສຳ ຄັນ.
  • $ request_uri - ໝາຍ ຄວາມວ່າ ຄຳ ຮ້ອງຂໍຕົ້ນສະບັບເຕັມຂອງ URI (ມີການໂຕ້ຖຽງ).

ພ້ອມກັນນັ້ນ, ຕົວປ່ຽນແປງ $ upstream_cache_status ໃນ ຄຳ ສັ່ງ add_header X-Cache-Status ແມ່ນຖືກຄິດໄລ່ ສຳ ລັບແຕ່ລະ ຄຳ ຮ້ອງຂໍທີ່ NGINX ຕອບສະ ໜອງ, ບໍ່ວ່າຈະເປັນ MISS (ການຕອບບໍ່ພົບໃນ cache, ໄດ້ຮັບຈາກ server server) ຫຼື HIT (ຄຳ ຕອບທີ່ໄດ້ຮັບຈາກ cache) ຫຼືຄຸນຄ່າອື່ນໆທີ່ຮອງຮັບ.

ຕໍ່ໄປ, ພາຍໃນ ຄຳ ສັ່ງ <ສະຖານທີ່ ທີ່ສົ່ງ ຄຳ ຮ້ອງຂໍ PHP ໄປ PHP-FPM, ໃຊ້ ຄຳ ສັ່ງ fastcgi_cache ເພື່ອເປີດໃຊ້ຖານຄວາມ ຈຳ ທີ່ທ່ານໄດ້ ກຳ ນົດໄວ້ຂ້າງເທິງ.

ພ້ອມທັງ ກຳ ນົດເວລາໃນການ ກຳ ນົດເວລາ ສຳ ລັບການຕອບຮັບທີ່ແຕກຕ່າງກັນໂດຍໃຊ້ ຄຳ ສັ່ງ fastcgi_cache_valid ດັ່ງທີ່ສະແດງ.

fastcgi_cache CACHEZONE;
fastcgi_cache_valid  60m;

ຖ້າເວລາໃນການເກັບ ກຳ ຂໍ້ມູນຖືກລະບຸໄວ້ໃນກໍລະນີຂອງພວກເຮົາ, ມີພຽງ 200, 301, ແລະ 302 ຄຳ ຕອບຈະຖືກເກັບ ແຕ່ທ່ານຍັງສາມາດ ກຳ ນົດ ຄຳ ຕອບທີ່ຈະແຈ້ງຫຼື ນຳ ໃຊ້ໃດໆ (ສຳ ລັບລະຫັດຕອບ):

fastcgi_cache CACHEZONE;
fastcgi_cache_valid 200  301 203 60m;
fastcgi_cache_valid 404 10m;
OR
fastcgi_cache CACHEZONE;
fastcgi_cache_valid  any 10m;

ການປະຕິບັດການເກັບຮັກສາ FastCGI ຈາກຖານຄວາມຈໍາທີ່ດີໃນ Nginx

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

fastcgi_cache_min_uses  3

ເພື່ອເຮັດໃຫ້ການຢືນຢັນຄືນ ໃໝ່ ຂອງລາຍການ cache ທີ່ ໝົດ ອາຍຸໂດຍໃຊ້ ຄຳ ຮ້ອງທີ່ມີເງື່ອນໄຂກັບຊ່ອງຫົວຂໍ້ "If-Modified-Since" ແລະ "If-None-Match", ເພີ່ມ ຄຳ ສັ່ງ fastcgi_cache_revalidate , ພາຍໃນ http {} ຫຼື server {} ຫຼື ສະຖານທີ່ {} ສະພາບການ.

fastcgi_cache_revalidate on;

ທ່ານຍັງສາມາດແນະ ນຳ NGINX ໃຫ້ສົ່ງເນື້ອຫາທີ່ຖືກເກັບໄວ້ໃນເວລາທີ່ server server ຫຼື server ຂອງ FCGI ຫຼຸດລົງ, ໂດຍໃຊ້ ຄຳ ສັ່ງ proxy_cache_use_stale , ພາຍໃນທິດທາງສະຖານທີ່.

ການຕັ້ງຄ່າຕົວຢ່າງນີ້ ໝາຍ ຄວາມວ່າເມື່ອ NGINX ໄດ້ຮັບຂໍ້ຜິດພາດ, ໝົດ ເວລາ, ແລະຂໍ້ຜິດພາດໃດ ໜຶ່ງ ທີ່ລະບຸຈາກ server ທີ່ຢູ່ເບື້ອງເທິງແລະມີເອກະສານສະບັບເກົ່າຂອງເອກະສານທີ່ຮ້ອງຂໍໃນເນື້ອຫາທີ່ເກັບໄວ້, ມັນຈະສົ່ງເອກະສານ stale.

proxy_cache_use_stale error timeout http_500;

ທິດທາງທີ່ເປັນປະໂຫຍດອີກອັນ ໜຶ່ງ ສຳ ລັບການປະຕິບັດການຕັ້ງຄ່າຖານຄວາມ ຈຳ ຂອງ FCGI ແມ່ນ fastcgi_cache_background_update ທີ່ເຮັດວຽກຮ່ວມກັບ ຄຳ ສັ່ງ proxy_cache_use_stale . ເມື່ອ ກຳ ນົດ, ມັນແນະ ນຳ ໃຫ້ NGINX ຮັບໃຊ້ເນື້ອຫາທີ່ບໍ່ສະຫຼາດເມື່ອລູກຄ້າຮ້ອງຂໍເອກະສານທີ່ ໝົດ ອາຍຸຫລື ກຳ ລັງຢູ່ໃນຂັ້ນຕອນທີ່ຈະຖືກປັບປຸງຈາກເຄື່ອງແມ່ຂ່າຍທີ່ຢູ່ເບື້ອງເທິງ.

fastcgi_cache_background_update on;

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

fastcgi_cache_lock on;

ຫຼັງຈາກເຮັດການປ່ຽນແປງທັງ ໝົດ ຂ້າງເທິງໃນເອກະສານການຕັ້ງຄ່າ NGINX, ບັນທຶກແລະປິດມັນ. ຫຼັງຈາກນັ້ນ, ກວດເບິ່ງໂຄງສ້າງການຕັ້ງຄ່າ ສຳ ລັບຂໍ້ຜິດພາດຂອງ syntax ໃດ ໜຶ່ງ ກ່ອນທີ່ຈະເລີ່ມການບໍລິການ NGINX.

# nginx -t
# systemctl restart nginx

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

# curl -I http://testapp.linux-console.net

ນີ້ແມ່ນພາບ ໜ້າ ຈໍອື່ນທີ່ສະແດງ NGINX ໃຫ້ບໍລິການຂໍ້ມູນທີ່ບໍ່ສະຫຼາດ.

ການເພີ່ມຂໍ້ຍົກເວັ້ນໃນ Cypass Cache

ມັນເປັນໄປໄດ້ທີ່ຈະ ກຳ ນົດເງື່ອນໄຂທີ່ NGINX ບໍ່ຄວນສົ່ງ ຄຳ ຕອບທີ່ຖືກເກັບໄວ້ໃຫ້ກັບລູກຄ້າ, ໂດຍໃຊ້ ຄຳ ສັ່ງ fastcgi_cache_bypass . ແລະເພື່ອແນະ ນຳ NGINX ບໍ່ໃຫ້ເກັບ ຄຳ ຕອບຈາກ server ທີ່ຢູ່ເບື້ອງເທິງ, ໃຫ້ໃຊ້ fastcgi_no_cache .

ຕົວຢ່າງ: ຖ້າທ່ານຕ້ອງການ POST ຄຳ ຮ້ອງຂໍແລະ URL ທີ່ມີສາຍ ຄຳ ຖາມເພື່ອເຂົ້າຫາ PHP ສະ ເໝີ. ກ່ອນອື່ນ ໝົດ, ປະກາດຖະແຫຼງການຖ້າ ກຳ ນົດເງື່ອນໄຂດັ່ງຕໍ່ໄປນີ້.

set $skip_cache 0; 
if ($request_method = POST) { 
	set $skip_cache 1; 
} 

ຫຼັງຈາກນັ້ນກະຕຸ້ນການຍົກເວັ້ນຂ້າງເທິງນີ້ໃນ ຄຳ ສັ່ງ ສະຖານທີ່ ທີ່ສົ່ງ ຄຳ ຮ້ອງຂໍ PHP ໄປ PHP-FPM, ໂດຍໃຊ້ ຄຳ ສັ່ງ fastcgi_cache_bypass ແລະ fastcgi_no_cache .

 
fastcgi_cache_bypass $skip_cache; 
fastcgi_no_cache $skip_cache;

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

ເພື່ອໃຊ້ມັນ, ເຮັດການປ່ຽນແປງ (ເຊັ່ນ: ໂດເມນ, ເສັ້ນທາງ, ຊື່ຫລິ້ນ, ແລະອື່ນໆ) ເພື່ອສະທ້ອນສິ່ງທີ່ມີຢູ່ໃນສະພາບແວດລ້ອມຂອງທ່ານ.

fastcgi_cache_path /var/run/NGINX-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m; 
fastcgi_cache_key "$scheme$request_method$host$request_uri"; 
server { 
	server_name example.com www.example.com; 
	root /var/www/example.com; 
	index index.php; 
	access_log /var/log/NGINX/example.com.access.log; 
	error_log /var/log/NGINX/example.com.error.log; 
	set $skip_cache 0; 
	# POST requests and URLs with a query string should always go to PHP 	
	if ($request_method = POST) { 
		set $skip_cache 1; 
	} 
	if ($query_string != "") {
		set $skip_cache 1; 
	} 
	# Don't cache URIs containing the following segments 
	if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php |sitemap(_index)?.xml") { 
		set $skip_cache 1; 
	} 
	# Don't use the cache for logged-in users or recent commenters 
	if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass |wordpress_no_cache|wordpress_logged_in") {
		set $skip_cache 1; 
	} 
	location / { 
		try_files $uri $uri/ /index.php?$args; 
	} 
	location ~ .php$ { 
		try_files $uri /index.php; 
		include fastcgi_params; 
		fastcgi_pass unix:/var/run/php5-fpm.sock; 
		fastcgi_cache_bypass $skip_cache; 
		fastcgi_no_cache $skip_cache; 
		fastcgi_cache WORDPRESS; 
		fastcgi_cache_valid 60m; 
	} 
	location ~ /purge(/.*) {
		fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; 
	} 
	location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg |gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi |wav|bmp|rtf)$ { 
		access_log off; 
		log_not_found off; 
		expires max; 
	} 
	location = /robots.txt { 
		access_log off; 
		log_not_found off; 
	}
	location ~ /. { 
		deny all; 
		access_log off; 
		log_not_found off; 
	} 
}

ເຮັດໃຫ້ແຄດ Proxy ໃນ NGINX

NGINX ຍັງສະ ໜັບ ສະ ໜູນ ການເກັບ ກຳ ຄຳ ຕອບຈາກເຄື່ອງແມ່ຂ່າຍອື່ນໆທີ່ ກຳ ນົດ (ຖືກ ກຳ ນົດໂດຍ ຄຳ ສັ່ງ proxy_pass ). ສຳ ລັບກໍລະນີທົດສອບນີ້, ພວກເຮົາ ກຳ ລັງໃຊ້ NGINX ເປັນໂປແກຼມປ່ຽນແທນ ສຳ ລັບໂປແກຼມ ນຳ ໃຊ້ເວັບ Node. ທິດທາງການຕັ້ງຄ່າທັງ ໝົດ ທີ່ ນຳ ໃຊ້ຢູ່ນີ້ມີຄວາມ ໝາຍ ຄ້າຍຄືກັນກັບ ຄຳ ສັ່ງຂອງ FastCGI ທີ່ຢູ່ໃນພາກກ່ອນ, ສະນັ້ນພວກເຮົາຈະບໍ່ອະທິບາຍມັນອີກຕໍ່ໄປ.

ເພື່ອໃຫ້ສາມາດເກັບ ກຳ ຄຳ ຕອບຈາກເຊີຟເວີທີ່ຖືກສົ່ງເສີມ, ປະກອບມີ ຄຳ ສັ່ງ proxy_cache_path ໃນລະດັບສູງສຸດ http {} ສະພາບການ. ເພື່ອລະບຸວ່າ ຄຳ ຮ້ອງຂໍຖືກເກັບໄວ້, ທ່ານຍັງສາມາດເພີ່ມ ຄຳ ສັ່ງ proxy_cache_key ດັ່ງຕໍ່ໄປນີ້.

proxy_cache_path /var/cache/nginx app1 keys_zone=PROXYCACHE:100m inactive=60m max_size=500m;
proxy_cache_key  "$scheme$request_method$host$request_uri";
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_min_uses 3;

ຕໍ່ໄປ, ກະຕຸ້ນ cache ໃນທິດທາງສະຖານທີ່.

location / {
	proxy_pass http://127.0.0.1:3000;
	proxy_cache        PROXYCACHE;
	proxy_cache_valid 200 302 10m;
	proxy_cache_valid 404      1m;
}

ເພື່ອ ກຳ ນົດເງື່ອນໄຂທີ່ NGINX ບໍ່ສົ່ງເນື້ອຫາທີ່ຖືກເກັບໄວ້ແລະບໍ່ເກັບຂໍ້ມູນຕອບກັບຈາກເຄື່ອງແມ່ຂ່າຍທີ່ຢູ່ເບື້ອງເທິງ, ປະກອບມີ proxy_cache_bypass ແລະ proxy_no_cache .

 
proxy_cache_bypass  $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache        $http_pragma $http_authorization;

ການປະຕິບັດການຕັ້ງຄ່າຖານຄວາມຈໍາທີ່ດີ

ຄຳ ແນະ ນຳ ຕໍ່ໄປນີ້ແມ່ນມີປະໂຫຍດຕໍ່ການປັບປຸງການປະຕິບັດງານຂອງເຊັດຕົວແທນ. ພວກເຂົາຍັງມີຄວາມ ໝາຍ ຄືກັນກັບ ຄຳ ສັ່ງແນະ ນຳ ຂອງ FastCGI.

proxy_cache_min_uses 3;
proxy_cache_revalidate on;
proxy_cache_use_stale error timeout updating http_500;
proxy_cache_background_update on;
proxy_cache_lock on;

ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມແລະ ຄຳ ແນະ ນຳ ກ່ຽວກັບການຕັ້ງຄ່າຖານຄວາມ ຈຳ, ເບິ່ງເອກະສານ ສຳ ລັບສອງໂມດູນຫລັກ ngx_http_fastcgi_module ແລະ ngx_http_proxy_module.

ຊັບພະຍາກອນເພີ່ມເຕີມ: ການຄົ້ນຫາເນື້ອໃນ NGINX ແລະ ຄຳ ແນະ ນຳ ສຳ ລັບການປັບປຸງການເຮັດວຽກຂອງ WordPress.